我的ui路线如下所示
.state('question', {
url: '/question',
templateUrl: 'views/templates/question.view.htm',
controller: 'QuestionController',
resolve: {
questions_preload: function(Question) {
return Question.query();
}
}
});
Question.query()函数看起来像
Question.query = function () {
var deferred = $http.get(HATEOAS_URL);
return SpringDataRestAdapter.processWithPromise(deferred).then(function (data) {
Question.resources = data._resources("self");
return _.map(data._embeddedItems, function (question) {
return new Question(question);
});
});
};
和控制器应该在这样的开始预先加载问题
angular.module('myapp').controller('QuestionController', function ($scope, Question) {
$scope.questions = questions_preload;
不幸的是,当Question.query()方法正确运行时,在控制器执行时,我认为容纳数组的questions_preload是未定义的。
我认为这与查询函数中的延迟有关? 有人有任何想法吗?
谢谢, 标记
答案 0 :(得分:1)
您必须将questions_preload
值注入控制器:
angular.module('myapp')
.controller('QuestionController',
function ($scope, Question, questions_preload) {
...
$scope.questions = questions_preload;
如你所知,你只是访问一个未定义的变量。
在Question.query()
中使用承诺并不重要,因为角度ui-router会在实例化控制器之前等待承诺解决。