有没有办法注册一个已延迟的依赖到已经引导的角模块?这里是我的意思:
说我有一个网站范围的角度应用程序,定义为:
// 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",'ngResource','ngAnimate',...]);
或者自己定义每个模块,然后将所有内容注入主应用程序(see here for more):
// in reports.js angular.module("Reports",'ngResource']) .controller("ReportsController",function($scope) { // .. reports controller code }]) // in home.js angular.module("Home",['ngAnimate']) .controller("HomeController",'$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等)所需的扩展,而无需在每次添加或删除某些内容时修改引导逻辑。
当应用程序已经被引导时,是否有一种方法来引入依赖关系?什么是被认为是惯用的方式(或方式)做到这一点?我倾向于后一个解决方案,但想看看我描述的方式是否也可以做到。谢谢。
我解决了这样:
再次引用应用程序:
var app = angular.module('app');
然后将新的需求推送到requirements数组:
app.requires.push('newDependency');