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? 国 ...
随机推荐
- Because the people who are crazy enough to think they can change the world, are the ones who do.
Here's to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square h ...
- linux定时执行任务 转
转自:http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html linux定时执行任务 (1)Linux下如何定时执行php ...
- libthrift0.9.0解析(二)之TSimpleServer
TSimpleServer简单实现Tserver,代码如下. /** * Simple singlethreaded server for testing. * */ public class TSi ...
- prototype constructor __proto__
constructor, prototype, __proto__ 详解
- Java反射 - 1(得到类对象的几种方法,调用方法,得到包下的所有类)
通过反射获得对象的方法 准备工作: 有一个User类如下 package o1; /** * Created by yesiming on 16-11-19. */ public class User ...
- java 使用正则表达式对文件名非法字符处理
1.文件名在操作系统中不允许出现 / \ " : | * ? < > 故将其以空替代 Pattern pattern = Pattern.compile(" ...
- uva 482 - Permutation Arrays
<int, double> --> <int, string> 从而避免了输出格式: #include <vector> #include <strin ...
- Java学习笔记——实现一个简易记事本Notepad的编写
记事本功能介绍 1. 新建:记事本清空. 2. 打开:可打开笔记本上任意文本文件. 3. 保存:将文件保存至当前文件夹. 4. 另存为:将文件保存至任意位置. 5. 退出:退出时确 ...
- 怎么加sudo权限
安装好Debian后还不能使用sudo如果没有安装sudo,则在root用户下apt-get install sudo在root设置sudoers配制文件chmod +w /etc/sudoersvi ...
- C 中typedef 函数指针的使用
类型定义的语法可以归结为一句话:只要在变量定义前面加上typedef,就成了类型定义.这儿的原本应该是变量的东西,就成为了类型. int integer; //整型变量int *pointer ...