角服务入门

  
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 美元委托;
  ,,,});
  });


角服务入门