2

如果我想创建一个自定义提供程序并在其中配置它Module.config,Angular 似乎要求首先声明提供程序。

不起作用

module.config(function(myServiceProvider) {  });
module.provider('myService', function() {  });

确实有效:

module.provider('myService', function() {  });
module.config(function(myServiceProvider) {  });

只是顺序不同。

我也试过这个Module.run,它似乎有同样的限制。除了确保在提供程序代码之后加载配置代码之外,还有其他方法吗?

编辑:这是工作订单JSFiddle 和 NON-working order的 JSFiddle 。 注意唯一改变的是顺序!

4

1 回答 1

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

这是一个更新的 jsfiddle

于 2013-10-28T16:47:05.647 回答