AngularJs中的provide
Constant定义常量用的,它定义的值当然就不能被改变,它可以被注入到任何地方,但是不能被装饰器( var app = angular.module('app',[]); app.config(function ($provide) { $provide.constant('movieTitle','The Matrix'); }); app.controller('ctrl',function (movieTitle) { expect(movieTitle).toEqual('The Matrix'); }); 语法糖: app.constant('movieTitle','The Matrix'); Value它可以是 var app = angular.module('app',[]); app.config(function ($provide) { $provide.value('movieTitle','The Matrix') }); app.controller('ctrl',function (movieTitle) { expect(movieTitle).toEqual('The Matrix'); }) 语法糖: app.value('movieTitle','The Matrix'); Service当使用 var app = angular.module('app',[]); app.config(function ($provide) { $provide.service('movie',function () { this.title = 'The Matrix'; }); }); app.controller('ctrl',function (movie) { expect(movie.title).toEqual('The Matrix'); }); 语法糖: app.service('movie',function () { this.title = 'The Matrix'; }); 在 Factory它是一个可注入的 当使用 var app = angular.module('app',[]); app.config(function ($provide) { $provide.factory('movie',function () { return { title: 'The Matrix'; } }); }); app.controller('ctrl',function (movie) { expect(movie.title).toEqual('The Matrix'); }); 语法糖: app.factory('movie',function () { return { title: 'The Matrix'; } });
Provider
var app = angular.module('app',[]); app.provider('movie',function () { var version; return { setVersion: function (value) { version = value; },$get: function () { return { title: 'The Matrix' + ' ' + version } } } }); app.config(function (movieProvider) { movieProvider.setVersion('Reloaded'); }); app.controller('ctrl',function (movie) { expect(movie.title).toEqual('The Matrix Reloaded'); }); 注意这里 Decorator这个比较特殊,它不是 var app = angular.module('app',[]); app.value('movieTitle','The Matrix'); app.config(function ($provide) { $provide.decorator('movieTitle',function ($delegate) { return $delegate + ' - starring Keanu Reeves'; }); }); app.controller('myController',function (movieTitle) { expect(movieTitle).toEqual('The Matrix - starring Keanu Reeves'); }); 总结
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |