我有一个设置,其中包含一个用于获取项目列表的服务,一个用于对该列表执行某些操作的控制器,以及一个用于迭代并显示每个项目的视图。
事实上,我的项目是RSS源的链接,在控制器中我想通过这些RSS源解析并设置要处理的视图的模型数据。
现在,对要完成的建模还有一些修改(我需要对实际的RSS提要内容建模),但我的第一个问题是服务提取的数据在我的控制器中是不可修改的(因为调用尚未完成,当我尝试访问它时,我猜)。基本上,如果我将它写入控制台,它只是一个空数组。
所以我需要知道在服务调用结束后如何在控制器中触发数据操作。
谢谢! // Joakim
服务代码:
angular.module('itemfeedServices', ['ngResource']).
factory('Item', function($resource){
return $resource('items/:itemId.json', {}, {
query: {method:'GET', params:{itemId:'items'}, isArray:true}
});
});
控制器代码:
function ItemListCtrl($scope, Item) {
$scope.items = Item.query();
console.log($scope.items); // gives []
}
答案 0 :(得分:2)
基本上,我认为你想要一个回调?文档说:
The action methods on the class object or instance object can be invoked with the following parameters:
HTTP GET "class" actions: Resource.action([parameters], [success], [error])
non-GET "class" actions: Resource.action([parameters], postData, [success], [error])
non-GET instance actions: instance.$action([parameters], [success], [error])
所以,使用:
Item.query({}, function() {
//you callback
});
应该有用。
答案 1 :(得分:1)
虽然回调会起作用,但它不是Angular的方法。查看promises pattern和Angular自己的实现,$q