我正在嘗試向我的應用程序中的每個狀態添加一個解析器函數,以等待應用程序「啓動」過程完成。我有以下的代碼已經:角ui路由器動態地將解析函數添加到所有狀態
angular.forEach($state.get(), function(state) {
state.resolve = state.resolve || {};
state.resolve.session = function() {
return SessionResolver.handle(state);
}
});
SessionResolver是在handle(state)
函數返回一旦啓動過程完成後是解決一個承諾的服務。
這工作正常,除非一個狀態已被定義爲不存在resolve
對象。例如,下面的狀態將被阻塞,直到SessionResolver.handle承諾解析:
$stateProvider.state('dashboard', {
url: "/",
templateUrl: "dashboard.html",
controller: "DashboardCtrl",
resolve: {}
});
但如果決心對象未設置狀態不會阻止:
$stateProvider.state('dashboard', {
url: "/",
templateUrl: "dashboard.html",
controller: "DashboardCtrl",
});
我寧願不要爲我的每個狀態添加一個空的resolve
對象,因爲我可能會在我處於這個狀態時向它們添加SessionResolver.handle解析函數。
除非解析對象已經存在,否則爲何動態地將解析函數添加到狀態的任何想法都會失敗?