有没有办法为已经引导的角度模块注入延迟依赖?这就是我的意思:
假设我有一个站点范围的角度应用程序,定义为:
// in app.js
var App = angular.module("App", []);
Run Code Online (Sandbox Code Playgroud)
在每一页:
<html ng-app="App">
Run Code Online (Sandbox Code Playgroud)
稍后,我重新打开应用程序,根据当前页面的需要添加逻辑:
// in reports.js
var App = angular.module("App")
App.controller("ReportsController", ['$scope', function($scope) {
// .. reports controller code
}])
Run Code Online (Sandbox Code Playgroud)
现在,说是逻辑的那些点播位中的一个还需要自己的依赖关系(如ngTouch,ngAnimate,ngResource,等).如何将它们附加到基础应用程序?这似乎不起作用:
// in reports.js
var App = angular.module("App", ['ui.event', 'ngResource']); // <-- raise error when App was already bootstrapped
Run Code Online (Sandbox Code Playgroud)
我意识到我可以事先做好一切,即 -
// in app.js
var App = angular.module("App", ['ui.event', 'ngResource', 'ngAnimate', ...]);
Run Code Online (Sandbox Code Playgroud)
或者自己定义每个模块,然后将所有内容注入主应用程序(有关更多信息,请参阅此处):
// in reports.js
angular.module("Reports", ['ui.event', 'ngResource'])
.controller("ReportsController", ['$scope', …Run Code Online (Sandbox Code Playgroud) 目前在app.js我有以下路线:
var gm = angular.module('gm', ['gm.services','gm.directives','gm.filters','gm.controllers','ngSanitize']);
gm.config(['$routeProvider', 'Path', function($routeProvider, Path) {
$routeProvider.when('/login', {
templateUrl: Path.view('application/authentication/login.html'),
controller: 'authController'
});
$routeProvider.when('/dashboard', {
templateUrl: Path.view('application/dashboard/index.html'),
controller: 'dashboardController'
});
$routeProvider.otherwise({
redirectTo: '/login'
});
}]);
Run Code Online (Sandbox Code Playgroud)
我正在尝试注入Path依赖项,如您所见.虽然我收到一个错误,说它找不到这个提供商.我认为这是因为配置模块提供程序首先执行.下面是我在"services.js"中的路径提供程序定义
gm.factory("Path", function() {
return {
view: function(path) {
return 'app/views/' + path;
},
css: function(path) {
return 'app/views/' + path;
},
font: function(path) {
return 'app/views/' + path;
},
img: function(path) {
return 'app/views/' + path;
},
js: function(path) {
return 'app/views/' + path;
},
vendor: function(path) {
return …Run Code Online (Sandbox Code Playgroud)