Angular.js-需要使用服务进行回调

Angular.js - callback needed using service

本文关键字:服务 回调 js- Angular      更新时间:2023-09-26

我有一个设置,其中有一个获取项目列表的服务,一个对该列表执行操作的控制器,以及一个迭代并显示每个项目的视图。

问题是,我的项目是指向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 []
 }

基本上,我认为您想要回调?文件上写着:

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

应该起作用。

虽然回调可以工作,但这不是Angular的方法。查看promise模式和Angular自己的实现$q