这是我的控制器呼叫服务:
Answers.getAnswers($routeParams.questionId, function(answers) {
console.log(answers);
$scope.answers = answers;
});
这是服务:
angular.module('intquestApp')
.factory('Answers', function ($resource) {
return {
getAnswers: function(questionId) {
$resource('api/answers?questionid=' + questionId);
}
};
});
我可以确认资源是肯定的,我知道questionId
的值是准确的。我在语法上做错了吗?
答案 0 :(得分:1)
重要的是要意识到调用$ resource对象方法会立即返回一个空引用(对象或数组,具体取决于isArray)。
您想要使用的是像there
解释的承诺Answers.getAnswers($routeParams.questionId).$promise.then(function (result) {
$scope.answers = result;
})
答案 1 :(得分:1)
从控制器代码的外观来看,您需要在工厂中进行回调。这是工厂代码(你在语法上有错误)
工厂代码:
//Define a module like this
angular.module('intquestApp',[])
.factory('Answers', function ($resource) {
return {
getAnswers: function(questionId,callback) {
//define resource
var questionURL = $resource('api/answers?questionid=' + questionId);
//fire the get call
questionURL.get().$promise.then(function(answer){
//return answer in callback
callback(answer);
});
}
};
});
控制器代码:
Answers.getAnswers($routeParams.questionId, function(answers) {
console.log(answers);
$scope.answers = answers;
});