在我的Angular应用程序中,我添加了跟踪功能,它应该作为单独的插件工作,因此如果HTML Angular中包含的脚本应该创建服务并初始化(运行)它。插件是服务,因为它强制依赖$rootScope
。
为了实现,我选择使用Angular工厂,例如(代码在myservice.js
中):
angular.module('app').factory('mysevice', ['$rootScope', '$interval', serviceFunc]);
function serviceFunc($rootScope, $interval) {
return {
run: function () { ... }
}
}
现在我有问题如何立即初始化它。我的解决方案是增强Angular app run
函数(代码在myservice.js中):
window.app.run(['mysevice', function (srvc) {
srvc.run();
}]);
app在单独的主app.js文件中定义,例如:
var app = window.app = angular.module('app', [...]);
app.run(['$state', 'breeze', ...,
function ($state, breeze, ...) { ..real initialization.. }
代码运行正常。 run
调用的run
和myservice
主要都可以。应用程序与服务一起运行良好,但代码看起来很难看,尤其是将应用程序存储在全局窗口对象中并组播run
函数。
有没有更好的方法来执行Angular服务并在应用程序启动后立即对其他一些Angular服务依赖项进行初始化。
答案 0 :(得分:7)
您可以致电angular.module('app').run(function(){...})
。所以你不再需要一个全局变量了。
示例:
angular.module('app').run(['mysevice', srvc.run.bind(srvc)]);