所以,我試圖動態加載一個文件,添加一個控制器到我的主模塊。問題是我不想在腳本標記中引用文件本身。懶惰加載控制器從單獨的文件使用狀態提供者
更具體地說,我有2個控制器文件。主控制器文件mainController.js
在我的index.html
文件中引用。我添加到該文件的任何控制器加載沒有問題。
控制器文件我想用我的登錄login.js
頁面,包含以下信息:
function LoginCtrl($http){
console.log("Controller loaded");
};
angular
.module('inspinia')
.controller('LoginCtrl', LoginCtrl);
我所有的控制文件都在同一個文件夾,但是,違背了mainController.js
,該login.js
文件不不出現在任何.html
文件中。
我的目的是加載login.js動態文件我stateProvider
裏面是這樣的:
$stateProvider
...
.state('logins', {
url: "/logins",
templateUrl: "views/login.html",
controller: LoginCtrl,
data: { pageTitle: 'Login', specialClass: 'gray-bg' },
resolve: {
loadPlugin: function($ocLazyLoad) {
return $ocLazyLoad.load ({
name: 'inspinia.LoginCtrl',
files: ['js/controllers/login.js']
});
}
}
})
...
只要我不嘗試動態加載login.js
文件(在我們添加參考文件.html文件或在mainController.js文件中添加登錄控制器代碼)一切正常。但只要我嘗試刪除引用強制stateProvider照顧加載我得到一個Error: $injector:modulerr
任何人都知道什麼是調用lazyLoader的正確方法,所以我只能加載我的.js文件,當我需要他們?
編輯信息: 我忘了提及的東西:文件加載部分本身似乎工作。如果我不在任何地方調用控制器並只加載它。我可以看到瀏覽器正在加載控制器文件。但問題似乎是時間問題。如果我提到.state()角度內的控制器名稱試圖在加載之前訪問它,並且在加載文件之前整個事件崩潰