这里有新鲜出炉的 AngularJS 开发指南,程序狗速度看过来!
AngularJS 诞生于 Google 是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入,等等。
这篇文章主要介绍了 angularJS Provider 详解及实例代码的相关资料, 需要的朋友可以参考下
factory
用 Factory 就是创建一个对象,为它添加属性,然后把这个对象返回出来。你把 service 传进 controller 之后,在 controller 里这个对象里的属性就可以通过 factory 使用了。
- app.controller('myFactoryCtrl',
- function($scope, myFactory) {
- $scope.artist = myFactory.getArtis();
- });
- app.factory('myFactory',
- function() {
- var _artist = '';
- var service = {};
- service.getArtist = function() {
- return _artist;
- }
- return service;
- });
service
Service 是用 "new" 关键字实例化的。因此,你应该给 "this" 添加属性,然后 service 返回 "this"。你把 service 传进 controller 之后,在 controller 里 "this" 上的属性就可以通过 service 来使用了。
- app.controller('myFactoryCtrl',
- function($scope, myService) {
- $scope.artist = myService.getArtis();
- });
- app.service('myService',
- function() {
- var _artist = '';
- this.getArtist = function() {
- return _artist;
- }
- });
provider
Providers 是唯一一种你可以传进 .config() 函数的 service。当你想要在 service 对象启用之前,先进行模块范围的配置,那就应该用 provider。
- app.controller('myProviderCtrl',
- function($scope, myProvider) {
- $scope.artist = myProvider.getArtist();
- $scope.data.thingFromConfig = myProvider.thingOnConfig;
- });
- app.provider('myProvider',
- function() {
- this._artist = '';
- this.thingFromConfig = '';
- this.$get = function() {
- var that = this;
- return {
- getArtist: function() {
- return that._artist;
- },
- thingOnConfig: that.thingFromConfig
- }
- }
- });
- app.config(function(myProviderProvider) {
- myProviderProvider.thingFromConfig = 'This was set in config()';
- });
value 和 constant
- $provide.value('myValue', 10);
- $provide.constant('myConstant', 10);
- /*
- 二者的区别:
- 1. value可以被修改,constant一旦声明就无法修改
- 2. value不可以在config中注入,constant可以。
- */
provider、factory、service 三者的关系
- app.provider('myDate', {
- $get: function() {
- return new Date();
- }
- });
- //可以写成
- app.factory('myDate', function(){
- return new Date();
- });
- //可以写成
- app.service('myDate', Date);
总结
来源: http://www.phperz.com/article/17/0507/331701.html