我正在使用以下angularjs项目结构:
index.html
js/
-- angularjs
-- application.js
-- shared
-----SharedModule.js
-----LocalizeService.js
-----OtherSharedService.js
-- user
-----UserModule.js
-----LoginController.js
-----RegisterController.js
-----UserService.js
换句话说,我不按类型(例如服务/控制器/指令)对文件进行分组,而是按其逻辑目的(例如用户/共享/购物车等)进行分组。我读到这是大型项目的正确方法。
主application.js文件包含如下模块:
angular.module('myApplication', [
'ngRoute',
'ngCookies',
'sharedModule',
'userModule',
'dahsboardModule',
])
然后,每个模块都包含相关的控制器/指令/服务/其他。
e.g。 SharedModule.js
var sharedModule = angular.module('sharedModule',[]);
sharedModule.factory('Localize', ['$http', '$rootScope', '$window', LocalizeService]);
sharedModule.controller('someController',['$rootScope',SomeController]);
然后我在每个单独的文件中实现逻辑。 我的问题是:我应该使用什么设计模式来实现每个单独服务/控制器的逻辑?
我读过这本书:http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/ 到目前为止,我心爱的设计模式是“揭示模块模式”,这是一种全方位的设计模式。我在其他项目中使用了很多次(没有角度)。
但似乎我不能将它与angularjs一起使用。
var LocalizeService = (function() {
})();
如何将$ rootScope / $ http等所有内容传递给模块?
这就是我现在的工作方式:
function LocalizeService($http,$rootScope,$window) {
var localize = (function() {
function publicFunction() {
// do smth.
}
return {
someFunction: publicFunction
}
})();
return localize;
}
但我不确定它是否完全正确。请你帮忙吗?
答案 0 :(得分:0)
您使用带有构造函数的service
而不是factory
:
var LocalizeService = (function() {
function LocalizeService($http, $rootScope, $window) {
}
LocalizeService.prototype = {
publicFunction: function() {
}
};
LocalizeService.$inject = ['$http','$rootScope','$window'];
return LocalizeService;
}());
sharedModule.service('Localize', LocalizeService);