在应用程序启动时初始化 Angular 服务(工厂)
Initialize Angular Service (factory) when application start
在我的 Angular 应用程序中,我添加了跟踪功能,它应该作为单独的插件工作,所以如果脚本包含在 HTML Angular 中应该创建服务并初始化(运行) 它。插件是服务,因为它对 $rootScope
具有强制依赖性。
对于实施,我 select 使用 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.js 文件中定义,例如:
var app = window.app = angular.module('app', [...]);
app.run(['$state', 'breeze', ...,
function ($state, breeze, ...) { ..real initialization.. }
代码运行良好。 run
和 run
的 myservice
调用都很好。应用程序和服务运行良好,但代码看起来很难看,尤其是将应用程序存储在全局 window 对象中并多播 run
函数。
有没有更好的方法来执行 Angular 服务并在应用启动后立即初始化它与其他一些 Angular 服务依赖项。
您可以拨打angular.module('app').run(function(){...})
。所以你将不再需要全局变量。
示例:
angular.module('app').run(['mysevice', srvc.run.bind(srvc)]);
在我的 Angular 应用程序中,我添加了跟踪功能,它应该作为单独的插件工作,所以如果脚本包含在 HTML Angular 中应该创建服务并初始化(运行) 它。插件是服务,因为它对 $rootScope
具有强制依赖性。
对于实施,我 select 使用 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.js 文件中定义,例如:
var app = window.app = angular.module('app', [...]);
app.run(['$state', 'breeze', ...,
function ($state, breeze, ...) { ..real initialization.. }
代码运行良好。 run
和 run
的 myservice
调用都很好。应用程序和服务运行良好,但代码看起来很难看,尤其是将应用程序存储在全局 window 对象中并多播 run
函数。
有没有更好的方法来执行 Angular 服务并在应用启动后立即初始化它与其他一些 Angular 服务依赖项。
您可以拨打angular.module('app').run(function(){...})
。所以你将不再需要全局变量。
示例:
angular.module('app').run(['mysevice', srvc.run.bind(srvc)]);