2014-09-02 32 views
3

我有一個關於延遲加載服務和工廠的問題。我一直在研究這個問題已經一個多星期了,還沒有找到滿意的答案。我發現:Lazy loading AngularJS modules with RequireJS這似乎接近,但它不是我要找的,我不想延遲加載我的模塊。使用RequireJS來延遲加載AngularJS DI組件

我不知道如何裝配使用AngularJS和RequireJS來解釋我的需求的笨蛋;所以我會嘗試儘可能清楚地解釋我的需求:

在這個時間點,我的每個AngularJS控制器,服務和工廠看起來是這樣的:

var dependencies = ['something', 'something/else']; 
define(dependencies, function() { 

    var controller = function(something, else) {}; 
    angular.module('app').controller('myController', ['something', 'else', controller]); 

}); 

這工作。我使用RequireJS加載我的依賴關係,一切都很好。令我困擾的是需要聲明我的依賴關係,並將我的AngularJS代碼封裝在RequireJS define調用中,我希望AngularJS(在此請原諒)做正確的事情。

理論上我的控制器的構造函數在當且僅當承諾的所有參數都被解析的情況下執行。我想創建一個服務解析器,它返回somethingsomething else的服務承諾,以便我可以跳過RequireJS define調用中的依賴關係,並處理服務解析器內部的問題,或者更好地處理我的DI容器。

我的問題是這樣的,有沒有人有這種模式的解決方案?有沒有人知道改變服務和工廠加載到承諾的方式?還是應該按照我一直在做的方式實現它,並等待AngularJS 2.0和子注入器?

我希望這個問題有道理。感謝您的時間和幫助,

回答

2

目前無法更改實施。 AngularJS沒有設置方法來改變ServiceProvider來返回自定義的promisses而不是具體的對象。

這將在未來的AngularJS中成爲可能Vojta Jinathis Youtube video中解釋。