天天看点

Angular Service入门

Angular为了方便开发者开发,本身提供了非常多的内置服务。可以通过https://docs.angularjs.org/api/ng/service查看AngularJS提供的内置服务。在企业级开发中,常用的服务有以下这些:

$cacheFactory 缓存服务

$compile 编译服务

$filter 通过 $filter 服务可以格式化输出数据,也可以对数据进行过滤操作

$http AngularJS内置的核心的服务,主要和后台请求相关

$location 基于window.location的Angular版本,功能更强大。比如路由地址的切换: $location.path('/home')

$log 开发过程中用到的多,输入错误和调试日志。和Chrome浏览器的console.log()、console.debug()等类似

$q 服务主要是用于异步函数返回一个promise,在路由中resovle属性用的较多

$rootScope 一个应用只有一个 $rootScope,该服务可以用于每个页面都需要使用的公共数据或者变量,但是开发过程中,建议尽量少用 $rootScope,调试起来不方便。因为它是一个全局变量。

可以通过多种方式方式定义Service,常用的使用factory来定义一个service。代码如下:

控制器和控制器之间共享数据也有多种方式,将变量或者函数绑定$rootScope是一种常见的方式,但是不推荐。常见的情况是使用Service来共享多个controller之间的数据。一个记录图书阅读的系统,需要记录最后一次编辑的图书信息。

在<code>BooksController.js</code>里面读取currentUser服务,在编辑的页面给currentUser服务里面的lastBookEdited对象赋值。

定义currentUser服务

在EditController.js

BooksController.js

模板books.html

在实际开发过程中,我们需要对自己的服务进行增加一下方法,或者对引入的第三方服务增加一下方法,开发者可以不需要修改之前的源代码,而是可以在运行时为Service增加方法。这里需要用到Decorator-修饰。修饰模式是软件设计里面一种经典设计模式,在高级的面向对象语言,比如Java、C#等都有实现。AngularJS代码举例:

});

本文转自 sshpp 51CTO博客,原文链接:http://blog.51cto.com/12902932/1926235,如需转载请自行联系原作者