有没有办法向已经自举的角度模块注入后期依赖关系?这就是我的意思:
假设我有一个网站范围的角度应用程序,定义为:
// in app.js
var App = angular.module("App", []);
在每个页面中:
<html ng-app="App">
稍后,我将重新打开该应用程序以根据当前页面的需求添加逻辑:
// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
现在,假设逻辑的那些点播位的是一个还需要自己的依赖关系(如ngTouch
,ngAnimate
,ngResource
,等)。如何将它们附加到基本应用程序?这似乎不起作用:
// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped
我意识到我可以提前做所有事情,即-
// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);
或单独定义每个模块,然后将所有内容注入主应用程序(有关更多信息,请参见此处):
// in reports.js
angular.module("Reports", ['ui.event', 'ngResource'])
.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
// in home.js
angular.module("Home", ['ngAnimate'])
.controller("HomeController", ['$scope', '$http', function($scope, $http){
// ...
}])
// in app.js, loaded last into the page (different for every page that varies in dependencies)
var App = angular.module("App", ['Reports', 'Home'])
但这需要我每次使用当前页面的依赖项来初始化应用程序。
我宁愿包括基本app.js
在每一个页面,并简单介绍一下需要扩展到每个页面(reports.js
,home.js
,等),而无需修改引导逻辑每次我添加或删除一些东西。
当应用程序已经启动时,是否可以引入依赖项?什么被认为是惯用的方式?我倾向于后一种解决方案,但是想看看我描述的方法是否也可以完成。谢谢。