角度模块加载

时间:2014-10-16 17:57:12

标签: javascript angularjs

如果我有这个模块:

angular.module('myMod', [])
.factory('MyService', ['$http', 'Common', function ($http, Common) {
    var neededUrl = Common.myUrl;
}]);

我以这种方式加载了我的应用模块:

angular.module('myApp', [
    'myMod'
])
.factory('Common', function () {
    return {
        myUrl: "/Some/Url"
    }
});

myMod能否接受Common依赖关系并将其加载?

或者这样做更好:

angular.module('common.module', [])
.factory('Common', function () {
    return {
        myUrl: "/Some/Url"
    }
});

angular.module('myApp', [
    'common.module',
    'myMod'
])

1 个答案:

答案 0 :(得分:2)

两者都有效,但两者都不正确。

来自MyService

myMod取决于Common,而不是相反。假设您确实选择将Common添加到模块common.module。然后myMod应取决于common.module

angular.module('common.module', [])
.factory('Common', function () {
    return {
        myUrl: "/Some/Url"
    }
});


angular.module('myMod', [
    'common.module'
])
.factory('MyService', ['$http', 'Common', function ($http, Common) {
    var neededUrl = Common.myUrl;
}]);


angular.module('myApp', [
    'myMod'
]);

使用正确的依赖关系管理可以运行独立的测试。以下是应该有效的茉莉花示例:

describe('Test myMod', function() {

    beforeEach(module('myMod')); // from angular-mocks

    it('should work', function() {
        expect(true).toBeTruthy();
    })
});

如果您选择了其中一个选项,那么测试用例就会失败,因为MyService确实依赖Common的{​​{1}}。