在我的项目中,我将角度服务划分为不同的文件,每个文件/服务应属于一个名为“ com.mysite.services
”的通用模块,例如:
ServiceA.js
ServiceB.js
ServiceC.js
...等等
但是通过这样定义它们:
angular.module('com.mysite.services', []).
service('ServiceA', function()
{
});
我覆盖了每个文件的模块。为了解决该问题,我定义了一个包装函数,如果未定义该函数,则会创建该模块,如果定义则返回对该模块的引用:
function angular_module(name, deps)
{
var m;
try
{
m = angular.module(name);
}
catch (e)
{
m = angular.module(name, deps || []);
}
return m;
};
因此,我可以简单地替换为“。”在声明中带有“ _”:
angular_module('com.mysite.services', []).
service('ServiceA', function()
{
});
这解决了我的问题,但是我的问题是:有没有一种方法可以避免使用我的包装程序,而采用Angular-ish解决方案? (似乎太蠢了:P)
最佳答案
不确定这是否是您需要的,但是您可以执行类似的操作
在专用文件中创建以下内容:
// Bootstrap.js
angular.module('com.mysite.services', ['com.mysite.services.ServiceA', 'com.mysite.services.ServiceB', ....]);
现在,对于每项服务,您都可以执行以下操作
// ServiceA.js
angular.module('com.mysite.services.ServiceA', []).
service('ServiceA', function(){});
//ServiceB.js
angular.module('com.mysite.services.ServiceB', []).
service('ServiceB', function(){});
现在,您可以在应用程序中依赖“ com.mysite.services”,并且可以访问所有服务。