我正在尝试从解析中返回数据列表,然后在我的控制器中访问该列表。 Resolve假设在加载控制器之前触发,但似乎相反。
dbdata.getlist 是使用$ http.get的api调用,它返回一个列表。
$routeProvider
.when('/main', {
templateUrl: 'views/main.html',
resolve : {
listdata: ['$q','dbdata',function ($q,dbdata) {
dbdata.getlist(function(data){
return data;
});
}]
},
controller: 'MainCtrl'
})
....
}
angular.module('amebaTvApp')
.controller('MainCtrl', ['$scope',
function ($scope,listdata) {
$scope.list = listdata;
...
}]);
建议编辑:
当我尝试下面的代码时,无法读取属性'然后'未定义
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似乎是未定义的,这就是我收到错误的原因:无法读取属性'然后'未定义
如果我像这样访问listdata:$ route.current.locals.listdata那么它可以工作。
答案 0 :(得分:0)
通过$ route.current.locals.listdata访问listdata似乎已经成功了。这是否是正确的方式我不太确定。任何反馈都会很棒。