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
이 resolvedVal
가 호출 재산 id
이없는 것입니다. 내가 여기서 무엇을 놓치고 있니? 이것이 올바른 접근 방식이 아니라면 무엇입니까? 당으로
무슨에서 컨트롤러로 XHR를 전달하는 최적의 방법이 될 것이다? – amcdnl
@amcdnl 가장 좋은 방법은 AppsModel.findOne이 약속을 반환하는 것입니다. 해결 의존 관계 중 하나가 약속이면 라우터는 컨트롤러가 인스턴스화되기 전에 모두 해결 될 때까지 기다립니다. 약속이 성공적으로 해결되면 해결 된 약속의 가치가 주입됩니다. 나는 항상 약속을 반환하는 restangular를 사용하므로 AppsMopdel.findOne은 Restangular.one ('company', id) .get(); – Beyers
예, 내 것이 약속을 반환합니다. 오 컨트롤러에 주사를 맞았습니까? – amcdnl