感謝偉大的article from Dan Wahlin,我設法實現了Angular的控制器和服務的延遲加載。但是,似乎沒有一種乾淨的方式來延遲加載獨立模塊。延遲加載AngularJS模塊與RequireJS
爲了更好地解釋我的問題,假設我有一個應用程序將是結構如下圖無RequireJS:
// Create independent module 'dataServices' module with 'Pictures' object
angular.module("dataServices", []).factory("Pictures", function (...) {...});
// Create 'webapp' ng-app, with dependency to 'dataServices', defining controllers
angular.module("webapp", ['dataServices'])
.controller("View1Controller", function (...) {...})
.controller("View2Controller", function (...) {...});
這裏是Plunker與RequireJS示例應用程序:
http://plnkr.co/aiarzVpMJchYPjFRrkwn
核心的問題在於Angular不允許在實例化後添加對依賴項的依賴。因此,我的解決方案是使用angular.injector
來檢索要在我的View2Controller
中使用的Picture
對象的實例。請參閱js/scripts/controllers/ctrl2.js
文件。
這給了我兩個問題:
- 注入的服務運行的角度之外,因此所有異步調用必須以$範圍END $適用()
- 凌亂的代碼,其中的一些對象可以被注入。使用標準的角度語法,而其他需要明確使用注射器。
有沒有人想出瞭如何使用RequireJS來延遲加載獨立模塊,並且以某種方式將該模塊掛接到角度中,因此可以使用正常的角度依賴注入語法?
注意:
的議題是獨立的模塊的延遲加載。這個特定示例的一個簡單解決方案是在ng-app.config
期間使用緩存$提供程序創建「圖片」對象,但這不是我正在尋找的。我正在尋找適用於第三方模塊的解決方案,如angular-resource
。
我發現了這一點[解決方案] [1] $ routeProvider的jQuery和決心 [1]:http://stackoverflow.com/a/28199498/4504198 –
@marcoseu:OFFTOPIC:請嘗試看看這個與angularAMD相關的問題。 :http://stackoverflow.com/questions/31288001/how-to-use-chart-js-with-angular-chart-using-requirejs – VBMali