如果我想创建自定义提供程序并在Module.config
中对其进行配置,则Angular似乎要求首先声明提供程序。
不工作:
module.config(function(myServiceProvider) { });
module.provider('myService', function() { });
确实工作:
module.provider('myService', function() { });
module.config(function(myServiceProvider) { });
只有订单不同。
我也尝试使用Module.run
,它似乎也有同样的限制。除了确保在提供者代码之后加载配置代码之外,还有其他方法吗?
修改:这是JSFiddle of the working order和JSFiddle of the NON-working order。 请注意,唯一改变的是订单!
答案 0 :(得分:2)
您可能需要考虑创建单独的模块。这不仅可以为您提供所需的灵活性,还有助于您的代码更易于测试和维护。
angular.module('myModule', ['myModule.controllers', 'myModule.services']).config(function (myServiceProvider) {
myServiceProvider.setName('Sam');
});
angular.module('myModule.controllers', []).controller('myController', function ($scope, myService) {
$scope.name = myService.getName();
});
angular.module('myModule.services', []).provider('myService', function () {
var name = 'John';
this.setName = function (newName) {
name = newName;
};
this.$get = function () {
return {
getName: function () {
return name;
}
};
};
});