4

我有一个设置,其中包含一个服务来获取项目列表、一个控制器来对该列表执行某些操作,以及一个用于迭代和显示每个项目的视图。

问题是,我的项目是指向 RSS 提要的链接,并且在控制器中我想解析这些 RSS 提要并设置模型数据以供视图处理。

现在,需要对建模进行一些修改(我需要对实际的 RSS 提要内容进行建模),但我的第一个问题是服务获取的数据在我的控制器中是不可修改的(因为调用没有完成,当时我尝试访问它,我猜)。如果我将它写入控制台,基本上它只是一个空数组。

所以我需要知道服务调用完成后如何触发控制器中的数据操作。

谢谢!!//乔金

服务代码:

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 []
 }
4

2 回答 2

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
});

应该管用。

于 2013-07-15T16:28:30.767 回答
1

虽然回调会起作用,但这不是 Angular 的做法。查看promise 模式和 Angular 自己的实现,$q

于 2014-02-18T09:54:17.107 回答