1
我試圖延遲加載控制器,直到我的AJAX請求已返回特定項目。在每個控制器,我這樣定義的路徑和控制器:AngularJS路由注入
define(['app'], function(app){
app.config(["$routeProvider", function($routeProvider) {
$routeProvider.when('/app-builder/:id', {
templateUrl: 'views/app-builder.html',
controller: 'AppBuilderCtrl',
resolve: {
resolvedVal: function($routeParams, AppsModel) {
return AppsModel.findOne($routeParams.id);
}
}
});
}]);
app.controller('AppBuilderCtrl', [function() { .... }]);
});
問題是$routeParams
沒有財產id
時resolvedVal
被調用。我在這裏錯過了什麼?如果這不是正確的方法,那是什麼?
什麼是對XHR傳遞給從控制器的最佳方法是什麼? – amcdnl
@amcdnl最好的方法是讓你的AppsModel.findOne返回一個承諾。如果任何解析依賴關係都是承諾,那麼在控制器實例化之前,路由器將等待它們全部解析。如果承諾解決成功,解決的承諾的值被注入。我使用總是返回promise的restangular,所以AppsMopdel.findOne可以像Restangular.one('company',id).get(); – Beyers
雅,我正在回覆一個承諾。哦,他們被注入到控制器中了嗎? – amcdnl