1。角内置服务
角为了方便开发者开发,本身提供了非常多的内置服务。可以通过https://docs.angularjs.org/api/ng/service查看AngularJS提供的内置服务。在企业级开发中,常用的服务有以下这些:
- <李>
美元cacheFactory缓存服务
李> <李>美元编译编译服务
李> <李>美元滤波器通过美元过滤器服务可以格式化输出数据,也可以对数据进行过滤操作
李> <李>http AngularJS美元内置的核心的服务,主要和后台请求相关
李> <李>美元位置基于窗口。位置的角版本,功能更强大,比如路由地址的切换:美元location.path (/home)
李> <李>日志美元开发过程中用到的多,输入错误和调试日志。和Chrome浏览器的console.log (), console.debug()等类似
李> <李>美元问服务主要是用于异步函数返回一个承诺,在路由中急待属性用的较多
李> <李>rootScope美元一个应用只有一个rootScope美元,该服务可以用于每个页面都需要使用的公共数据或者变量,但是开发过程中,建议尽量少用rootScope美元,调试起来不方便,因为它是一个全局变量。
李>2。角自定义服务
可以通过多种方式方式定义服务,常用的使用工厂来定义一个服务。代码如下:
app.factory (“dataService”, function (), {,,, var appVerison =,“1.0”,,,,, var showVersion =, function (), {,,,,,,, return appVerison; ,,,},,,,,return { ,,,,,,,appTitle:,“Decorators 演示”, ,,,,,,,showVersion: showVersion ,,,} });
3。在控制器之间共享数据使用服务
控制器和控制器之间共享数据也有多种方式,将变量或者函数绑定rootScope美元是一种常见的方式,但是不推荐。常见的情况是使用服务来共享多个控制器之间的数据。一个记录图书阅读的系统,需要记录最后一次编辑的图书信息。
在<代码> BooksController。js代码>里面读取currentUser服务,在编辑的页面给currentUser服务里面的lastBookEdited对象赋值。
定义currentUser服务
angular.module(“软件”) ,,,.factory (“currentUser”, function (), {,,,,,,, var lastBookEdited =, {},,,,,,,,, return { ,,,,,,,,,,,lastBookEdited: lastBookEdited ,,,,,,,} ,,,,,,, ,,,});
在EditController。js
<>以前dataService.getBookByID (routeParams.bookId美元) ,,,,,,,,,,,不要犹豫(function (反应),{ ,,,,,,,,,,,,,,,vm.currentBook =,反应;//将当前编辑的图书对象赋值给lastBookEdited ,,,,,,,,,,,,,,,currentUser.lastBookEdited=vm.currentBook;属性 ,,,,,,,,,,,}) ,,,,,,,,,,,.catch (function (反应),{ ,,,,,,,,,,,,,,,美元log.error(响应); ,,,,,,,,,,,});BooksController。js
<>以前vm.currentUser=currentUser;模板书。html
& lt; div> ,,,‘书’。‘summaryData’。‘bookCount’, Books ,,,,,‘书’。‘summaryData’。‘readerCount’, Readers ,,,,,‘书’。‘summaryData’。‘grandTotalMinutes’, Total Minutes Read
4.装饰(修饰)在角服务的使用
在实际开发过程中,我们需要对自己的服务进行增加一下方法,或者对引入的第三方服务增加一下方法,开发者可以不需要修改之前的源代码,而是可以在运行时为服务增加方法。这里需要用到装饰——修饰。<强>修饰模式强>是软件设计里面一种经典设计模式,在高级的面向对象语言,比如Java、c#等都有实现.AngularJS代码举例:
var app =, angular.module(“应用程序”,[]); app.controller (“MainCtrl”, function (范围、美元,dataService), { ,,,scope.app 美元;=,dataService; }); app.factory (“dataService”, function (), {,,, var appVerison =,“1.0”,,,,, var showVersion =, function (), {,,,,,,, return appVerison; ,,,},,,,,return { ,,,,,,,appTitle:,“Decorators 演示”, ,,,,,,,showVersion: showVersion ,,,} }); app.config (function (提供美元),{ ,,,provide.decorator美元(“dataService”, function (代表美元),{ ,,,,,,,delegate.sayHello 美元;=,function (), {,,,,,,,,,,, return “a new  function of dataService”; ,,,,,,,},,,,,,,,,return 美元委托; ,,,}); });