해결에서 데이터 목록을 반환하려고하고 나서 내 컨트롤러의 해당 목록에 액세스하려고합니다. Resolve는 컨트롤러가로드되기 전에 실행되는 것으로 가정되지만 그 반대입니다.resolve from
dbdata.getlist은 목록을 반환하는 $ http.get을 사용하는 API 호출입니다.
angular.module('amebaTvApp')
.controller('MainCtrl', ['$scope',
function ($scope,listdata) {
$scope.list = listdata;
...
}]);
$routeProvider
.when('/main', {
templateUrl: 'views/main.html',
resolve : {
listdata: ['$q','dbdata',function ($q,dbdata) {
dbdata.getlist(function(data){
return data;
});
}]
},
controller: 'MainCtrl'
})
....
}
제안 편집은 :
나는
listdata: ['$q','dbdata',function ($q,dbdata) {
var deferred = $q.defer();
dbdata.getFeatures(function(data){
deferred.resolve(data);
});
return deferred.promise;
}]
아래의 코드를하려고 할 때 가 '다음'정의되지 않은의 속성을 읽을 수 없습니다 얻을 .. ..
listdata.then(function(data) {
$scope.list = data;
});
lisdata이 정의되지 않은 것 같다 때이 오류가 발생 된 이유 컨트롤러로드 : $의 route.current : 내가 지금처럼되는 listData에 액세스하는 경우 가 정의되지 않은
의 '다음'속성을 읽을 수 없습니다. locals.listdata 그러면 작동합니다.
확인 약속 ... listdata.then ( 기능 (데이터) { $ scope.list = 데이터; }) – Asik
@Asik 나는 '다음'기능 때문에 목록을 반환하고있어 적용 할 수 없습니다 그것에. – Fabii
@Fabii 당신의 콜백 함수 **에서 ** 귀하의 해결 함수에서 ** 목록을 반환합니다. '해결'의 개념은 약속을 되 찾는 것이고, 약속이 해결되면 경로가 변경되어 약속의 값을 새로운 컨트롤러에 주입 할 수 있습니다. – Brocco