2

カスタム プロバイダーを作成して 内で構成したい場合Module.config、Angular では最初にプロバイダーを宣言する必要があるようです。

これは機能しませ:

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

これ機能します:

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

順番が違うだけです。

これも試してみましModule.runたが、同じ制限があるようです。プロバイダー コードの後に​​構成コードが確実に読み込まれるようにする以外に、これを回避する方法はありますか?

編集:これは、 working orderJSFiddle と、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 に答える