AngularJS服务之 Factory vs Service vs Provider
来源:互联网 发布:js给radio设置选中事件 编辑:程序博客网 时间:2024/06/11 10:30
AngularJS的service层用于处理业务逻辑和数据持久化,以下3钟方法可以创建并注册我们自己的service,在控制器中注入已创建的service服务,就可以调用service里面的属性和方法了。
1、Factory
2、Service
3、Provider
1、最简单的方式:Factory工厂方法
Angular里创建service最简单的方式就是使用factory()方法,使用factory()来创建服务的时候,首先创建一个对象,然后在这个对象上添加属性,最后返回这个对象。把这个服务注入控制器中,控制器就可以访问对象上的方法了。
angular.module('yeomanAngularApp').factory('playerFactory',function(){var _players = [{"username":"zhangsan",'address':'北京'},{"username":"lisi",'address':'上海'},{"username":"wangwu",'address':'大连'}];var service = {};service.getPlayers = function(){return _players;}return service;});
angular.module('yeomanAngularApp').controller('PlayerCtrl', function ($scope,$http,$filter,playerFactory) {$scope.playName = $filter('lowercase')('Angular');$scope.players = playerService.getPlayers();console.log(players);})
2、最直接的方式:Service构造函数方法
service()与factory用法差不多,区别在于不需要返回一个对象。
使用service()创建服务时,相当于使用new关键字进行了实例化,只需要在this上添加属性和方法,然后服务会自动返回this。把这个服务注入控制器中,控制器就可以访问对象上的属性方法了。
angular.module('yeomanAngularApp').service('playerService', function(){this.getRemotePlayers = function(){var deferred = $q.defer(); $http({ method: 'JSONP', url: 'url'+'&callback=JSON_CALLBACK' }).success(function(data, status) { deferred.resove(data); }).error(function(data, status) { deferred.reject('error'); }); return deferred.promise;}})
angular.module('yeomanAngularApp').controller('PlayerCtrl', function ($scope,$http,$filter,playerService) {$scope.players = playerService.getRemotePlayers();console.log(players);})
3、最通用的方式:Provider方法
provider是唯一一种可以创建用来注入到config()函数的服务的方式。如果要在service对象启动之前先进行模块范围的配置,应使用Provider。
angular.module('yeomanAngularApp').provider('playerProvider',function(){this._players = [{"username":"zhangsan",'address':'北京'},{"username":"lisi",'address':'上海'},{"username":"wangwu",'address':'大连'}];this.paramFromConfig = '';this.$get = function(){var that = this;return{getPlayers: function(){return that._players;},paramOnConfig: that.paramFromConfig}}}).config(function(playerProviderProvider){playerProviderProvider.paramFromConfig = 'param from config';})
angular.module('yeomanAngularApp').controller('PlayerCtrl', function ($scope,$http,$filter,playerProvider) {$scope.playName = $filter('lowercase')('Angular');$scope.players = playerService.getPlayers();console.log(players);})
阅读全文
1 0
- AngularJS服务之 Factory vs Service vs Provider
- AngularJS之Factory vs Service vs Provider
- AngularJS 之 Factory vs Service vs Provider
- AngularJS 之 Factory vs Service vs Provider
- AngularJS之Factory vs Service vs Provider
- AngularJS之Factory vs Service vs Provider
- AngularJS 之 Factory vs Service vs Provider
- AngularJS 之 Factory vs Service vs Provider
- AngularJS: Factory vs Service vs Provider
- AngularJS: Factory vs Service vs Provider
- AngularJS: Factory vs Service vs Provider
- AngularJS: Factory VS Service VS Provider
- AngularJS: Factory vs Service vs Provider
- AngularJS服务(Factory/Provider/Service)
- 《AngularJS》------自定义服务 provider、service、factory
- angularJs自定义服务(factory,service,provider)
- Angularjs service factory provider
- angularjs factory,service,provider 自定义服务的不同
- js对象的可枚举性
- radio根据值选中
- 模态框获取datatable传过来的数据
- BZOJ3524[Couriers] 不带修改主席树裸题
- java中的static
- AngularJS服务之 Factory vs Service vs Provider
- Sass编译
- X Chen笔记---Centos网卡桥接 方法二
- java实现的身份证照片脸部识别(头像截图) 以及OCR字体识别
- lr学习笔记--设置断点,单行、多行注释,集合点,录制时自动设置检查点
- Excel在统计分析中的应用—第六章—概率分布及概率分布图-Part1-离散型概率分布(二项分布函数BINOMDIST的应用)
- SNAP(Sentine-1 Toolbox)
- 2208: [Jsoi2010]连通数(Trajan+bitset)
- Oracle sqlplus 命令大全