2015-11-13 24 views
0

我有一個函數返回一個或多個承諾,因爲它加載資源,在這種情況下,傳遞給函數的jsRequires定義的模塊。該函數以「resolve:」的值提供,因此它就像工廠函數一樣,返回值將被注入到應用程序的主控制器中。 它完全是這樣的:當一個函數必須返回promise時,我怎樣才能在一個狀態中實現多個解析?

當我想添加更多的議決,因爲你顯然不能有多個「的決心:」我必須做這樣的:

$stateProvider.state('app', { 
url: "/app", 
templateUrl: "assets/views/apphome.html", 
resolve: { 
    key1: value, 
    key2: loadSequence('moment', 'perfect-scrollbar-plugin', 'toaster') 
} 
}) 
//.state(' ... 
//etc. 

我loadSequence功能在這裏不能添加爲一個值,因爲那樣的話我的承諾將不會被注入,可爲國家如果我這樣做,我會得到這個錯誤:

Error: [$rootScope:inprog] $digest already in progress

我的問題不是那麼多關於錯誤。 如何添加我的loadSequence函數,使其繼續按照上面第一個指示的方式工作?

+0

如果我理解你的問題,你必須把它包起來像一個函數: 鍵2:函數(){返回loadSequence(「時刻」,「完美 - 滾動條插件','toaster')} – jan

回答

0

試試這個方法:

$stateProvider.state('app', { 
    url: "/app", 
    templateUrl: "assets/views/apphome.html", 
    resolve: { 
     key1: value, 
     key2: function(){return loadSequence('moment', 'perfect-scrollbar-plugin', 'toaster');} 
    } 
}) 
+0

使用「resolve:loadSequence(...」,結果的promise被注入到$ rootScope中,模塊定義的變量是可以直接訪問的,當使用多個resolves時,angular-ui-router會嘗試將承諾注入key2,這是不可能的,這是挑戰。 – Oshkosh1017

相關問題