AngularJS的自定义服务

来源:互联网 发布:英语翻译网络主播 编辑:程序博客网 时间:2024/06/05 03:36

我们以cookie为例。

第一步:首先打开控制台使用bower安装angular-cookies

bower --save angular-cookies

第二步 : 在service目录下建一个cache.js文件。

第三步 : 在index.html中引入angular-cookies模块。

第四步 : 在app.js中添加ngCookies依赖。

'use strict'angular.module('app',['ui.router','ngCookies']);

第五步:在cache.js中调用$cookies服务

方法一:service服务的方式

'use strict';angular.module('app').service('cache', ['$cookies', function($cookies){    this.put = function(key, value){        $cookies.put(key, value);    };    this.get = function(key) {        return $cookies.get(key);    };    this.remove = function(key) {        $cookies.remove(key);    };}]);

方法二:facotry服务工厂的方式

angular.module('app').factor('cache', ['$cookies', function($cookies){    //也就是说factor和service同时声明服务,作用是一样的,它们的区别在于我们调用factor的时候,factor可以在return对象之前可以声明一些私有的属性。如:    var obj = {};//相当于一个私有属性,外部不可访问,而直接声明service是没有这个功能的。    //注意:factor和service不同,我们不能再this这个当前对象上面添加属性了,而是返回一个对象    //这个对象所带来的属性就是我们外面引用的factor可以引用的属性    return {            put : function(key, value){            $cookies.put(key, value);            };            get : function(key) {                return $cookies.get(key);            };            remove : function(key) {                $cookies.remove(key);            };            }}]);

也就是说factor和service同时声明服务,作用是一样的,它们的区别在于我们调用factor的时候,factor可以在return对象之前可以声明一些私有的属性。
当不需要声明内部的私有属性的时候,他们的功能是相同的。
需要记住的是factor需要直接返回一个对象,而service直接返回函数就可以了。

第六步:使用的时候要在controller控制器中声明这个服务cache,如

'use strict';angular.module('app').controller('positionCtrl',['$q','$http','$state','$scope','cache',function ($q,$http,$state,$scope,cache) {  cache.put('to','day');//存入这个值  cache.remove('to'); //删除}]);
原创粉丝点击