AngularJs学习笔记5——自定义服务
前面整理了AngularJs双向数据绑定和自定义指令的相关内容,从手册上看也知道,ng部分还包括过滤器和函数,以及服务等。
过滤器:filter,就是对数据进行格式化,注意管道格式,例如:
{{表达式 | number/currency/data/orderBy : " 相应的格式或表达式 "}}
函数:function,应该不用介绍了。这里需要注意的是forEach函数的形参顺序,基本格式如下:
var obj={name:"fanfan",age:"20",gender:"female"};
angular.forEach(obj,function(value,key){
console.log(key+":"+value);});
);
服务:Angular services are singletons objects or functions that carry out specific tasks common to web apps.它是一个单例对象或函数,对外提供特定的功能。这也是我今天整理的重点。
内置服务:ng提供了很多内置的服务,我们可以直接使用。
1.$scope/$rootScope
首先我们要掌握的就是之前出现过的$scope,以及它的父级$rootScope。$scope/$rootScope都是ng内置的服务,服务的本质其实是一个对象
如何使用:在控制器所对应的方法中注入进来 function($scope,$rootScope)
$scope与$rootScope的关系/区别
$rootScope是在ng启动时就会初始化一个对象,id为1;
$scope是在调用控制器的方法时,注入过来的对象,id根据加载顺序向上递增,不同的控制器之间$scope数据时无法共享的,由于都是$rootScope的子元素,所以解决数据共享的问题,就是把数据放在$rootScope对象。实现控制器的嵌套,父元素中的模型数据是可以被子元素引用的。
2.$http服务
$http服务是AngularJS中的AJAX,其中$http中get和post方法(设置请求头app.run)的不同,数据序列化($.param)。
app.run(function($http){
$http.defaults.headers.post = {'Content-Type':'application/x-www-form-urlencoded'};//post方法需要的请求头设置
});
app.controller('fanCtrl', function ($scope,$http) {
// $http的get方法
// $http.get('data/server.php').success(function(data){
// console.log(data);
// $scope.list=data;
// })
varobj={name:'Jerry',age:20};
console.log($.param(obj));
$scope.add=function(){
$http.post('data/server2.php', $.param(obj)).success(function(data){
console.log(data);
$scope.list=data;
})
}
})
自定义服务:
1.factory
app.factory(‘服务名称’,function(){
return {
funcName:function(){}
}
});
6app.controller(‘myCtrl’,function($scope,服务器名称){
7 服务器名称.funcName;
8 });
2.service
app.service(‘服务器名称’,function(){
this.变量名=值;
this.方法名=function(){};
})
app.controller(‘myCtrl’,function($scope,服务器名称){
服务器名称.funcName;
});
factory和service的区别就是:factory里是普通的function,而service里是构造函数,在Angular中,调用service会用new关键字实例一个服务,而调用factory就是调用普通的function,所有factory可以返回任何的值,而service可以不返回。
以上就是自定义服务的两种方法。还有几种常量定义的服务方法。constant/value à创建的服务器返回一个常量。我们自定义的服务在依赖注入里再细说怎么使用。晚安
AngularJs学习笔记5——自定义服务的更多相关文章
- AngularJS学习---REST和自定义服务(REST and Custom Services) ngResource step 11
1.切换目录 git checkout step- npm start 2.效果图 效果图和step 10的没有什么差别,这里主要的改动都是代码,代码做了很多优化,这里效果图就不再贴出来了. 3.实现 ...
- AngularJs学习笔记3——自定义指令
指令 概述: 前面也说过一些常用指令,用于快速入门.现在详细总结一下:指令用于实现各种页面的操作,是对于底层DOM操作的封装,扩展了HTML的行为,实现页面交互以及数据绑定. 指令是一种执行的信号,一 ...
- AngularJS学习笔记(四) 自定义指令
指令(directive)是啥?简单来说就是实现一定功能的XXX...之前一直用的ng-model,ng-click等等都是指令.当我有一个ng没提供的需求的时候,就可以自定义个指令.指令的好处显而易 ...
- AngularJs学习笔记--Forms
原版地址:http://code.angularjs.org/1.0.2/docs/guide/forms 控件(input.select.textarea)是用户输入数据的一种方式.Form(表单) ...
- AngularJs学习笔记--html compiler
原文再续,书接上回...依旧参考http://code.angularjs.org/1.0.2/docs/guide/compiler 一.总括 Angular的HTML compiler允许开发者自 ...
- AngularJs学习笔记--concepts(概念)
原版地址:http://code.angularjs.org/1.0.2/docs/guide/concepts 继续.. 一.总括 本文主要是angular组件(components)的概览,并说明 ...
- AngularJs学习笔记--Managing Service Dependencies
原版地址:http://docs.angularjs.org/guide/dev_guide.services.managing_dependencies angular允许service将其他ser ...
- AngularJs学习笔记--Creating Services
原版地址:http://docs.angularjs.org/guide/dev_guide.services.creating_services 虽然angular提供许多有用的service,在一 ...
- AngularJs学习笔记--I18n/L10n
原版地址:http://code.angularjs.org/1.0.2/docs/guide/i18n 一.I18n and L10n in AngularJS 1. 什么是I18n和L10n? 国 ...
随机推荐
- Java字符串的10大热点问题,你都懂吗?
转自 威哥干JAVA http://www.codingke.com 下面我为大家总结了10条Java开发者经常会提的关于Java字符串的问题,如果你也是Java初学者,仔细看看吧: 1.如何比较字符 ...
- 利用CSS实现居中对齐
1. 文本居中 首先编写一个简单的html代码,设置一个类名为parentDiv的div对象.html代码如下: <div class="parentDiv"> 这里随 ...
- 结束指定Activity实例代码
开通博客两个多月了,一直在看你们的文章 终于发觉伸手党真的很可耻.. 于是就随便写了个Demo来结束伸手党生涯~ Demo很简单:结束指定Activity... 不过也是我的一个小心意嘛.. 不要责怪 ...
- char * 和 void *
POSIX.1 将 read函数的原型做了修改,经典的定义为 int read(int filedes, char *buf, unsigned nbytes); 修改为 ssize_t read(i ...
- zepto源码研究 - zepto.js (zepto.init)
简要:当我们用$()时,便会直接调用zepto.init 生成zepto对象,那zepto.init是如何根据不同类型的参数来生产指定对象呢? zepto.init = function(select ...
- 单点登录CAS使用记(一):前期准备以及为CAS-Server配置SSL协议
知识点: SSO:单点登录(Single Sign On),是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统. CAS:耶 ...
- IE9的BUG?jQuery的BUG?
本文转载自http://big-student.iteye.com/blog/1898213 在IE9和IE10中,当对一个html的样式初始了一个很大的left或者top时,使用jQuery的off ...
- 一个Div在BOdy中上下左右居中
在body中让一个DIv居中 上下左右 <body> <div style=" width:800px; height:500px; position:absolute; ...
- ionic框架,快速开发webAPP神器。
官网地址 http://www.ionicframework.com/ 这个国外框架已经很火了.会使用插件的话更好,例如支付宝支付插件,调用摄像头拍照,二维码扫描,通讯录,文件上传,推送信息等等. 最 ...
- git生成密钥
安装 Git-1.9.4-preview20140611 1 通过 ssh-keygen 但生成的位置却是C:\Users\Admin\AppData\Local\VirtualStore\Progr ...