AngularJS:Module.config之后的提供者?

时间:2013-06-24 21:22:48

标签: angularjs

如果我想创建自定义提供程序并在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 orderJSFiddle of the NON-working order请注意,唯一改变的是订单!

1 个答案:

答案 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;
            }
        };
    };
});

这是updated jsfiddle