provider是干啥的?
provider可以为应用提供通用的服务,形式可以是常量,也可以是对象。
比如我们在controller里常用的$http
就是AngularJS框架提供的provider
myApp.controller(‘MainController', function($scope, $http) { $http.get(…) }
在上面的代码里,就可以直接使用$http
包好的各种功能了
provider
那我们自己想定制一个provider,怎么写呢
//定义: $provide.provider('age', { start: 10, $get: function() { return this.start + 2; } }); //或 $provide.provider('age', function($filterProvider){ this.start = 10; this.$get = function() { return this.start + 2; }; }); //调用: app.controller('MainCtrl', function($scope, age) { $scope.age = age; //12 });
provider的基本原则就是通过实现$get
方法来在应用中注入单例,使用的时候拿到的age
就是$get
执行后的结果。 上面例子中的两种定义方法都可以
factory
$provide.provider('myDate', { $get: function() { return new Date(); } }); //可以写成 $provide.factory('myDate', function(){ return new Date(); }); //调用: app.controller('MainCtrl', function($scope, myDate) { $scope.myDate = myDate; //current date });
直接第二个参数就是$get要对应的函数实现,代码简单了很多有没有?!
service
这时候我又来劲儿了,我不仅就想定义个$get
,里面我还就返回个new出来的已有js类,三哥service
闪亮登场
$provide.provider('myDate', { $get: function() { return new Date(); } }); //可以写成 $provide.factory('myDate', function(){ return new Date(); }); //可以写成 $provide.service('myDate', Date);
对于这种需求,代码更简洁了是不是
最后再总结一下provider哥儿几个的优点~
1. 为应用提供通用的服务,形式可以是常量或对象
2. 便于模块化
3. 便于单元测试
相关推荐
主要介绍了angularJS Provider详解及实例代码的相关资料,需要的朋友可以参考下
AngularJS 之 Factory vs Service vs Provider 技术翻译 开源中国社区143人收藏此文章, 我要收藏参与翻译(4人
本篇文章主要介绍了详解Angular中的自定义服务Service、Provider以及Factory,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
摘要翻译,原文链接:http://www.ng-newsletter.com/advent2013/#!目录[-]一、service引导二、service一、s
前言 1、3种创建自定义服务的方式。 Factory Service ...service层:主查写逻辑代码的,但在angularJS里也可以持久化数据(充当数据容器),以供不同的controller高用。 controller层:即控制层
09-$provide.factory、service方法.html 10-多个控制器数据共享.html 11-过滤器.html 12-购物车练习-过滤器.html 13-购物车练习-路由器.html 14-表单验证.html 15-controler之间的通信.html
angularjs 中可通过三种($provider,$factory,$service)方式自定义服务,以下是不同的实现形式: // 定义module , module中注入$provide var starterApp = angular.module('starter.controllers', [],function($...
Chapter 1 Falling In Love With AngularJS . . . . . 1 The Power Features of AngularJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Download and Installation . . . . . . . . . . ....
使用 UI Router 启动具有模块化和可扩展架构的 AngularJS 项目 入门 要开始使用该项目,请clone或fork它。 它使用节点包管理器 (NPM) 来管理全局包,使用 Bower 来管理扩展。 默认情况下,它还使用 Angular UI ...
控制器yo angular-brunch:controller 服务yo angular-brunch:service 工厂yo angular-brunch:factory 提供者yo angular-brunch:provider已知的问题 :此库依赖于节点0.10 ,如果您有更高版本,则在运行早午餐w时会...