2013-07-15 47 views
4

我有一個設置,提供一個服務來獲取項目列表,一個控制器對該列表執行某些操作,以及一個視圖遍歷並顯示每個項目。Angular.js - 使用服務需要回調

事情是,我的項目是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 [] 
} 

回答

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]) 

Here

因此,使用:

Item.query({}, function() { 
//you callback 
}); 

應該工作。

+0

這確實奏效。下次會更好地閱讀文檔。 :) 謝謝! – joakimnorberg

1

儘管回調會起作用,但它並不是角度的方式。檢查出promises pattern和Angular自己執行它,$q

+0

您可以指出或給出一個使用ngResource服務但不使用回調但使用promise模式的示例/教程嗎? – marce

+1

https://stackoverflow.com/questions/19490560/angularjs-resource-promise – bluehallu