2
我有一個顯示的項目的列表的視圖:如何給角度資源添加回調?
<li ng-repeat="item in items">{{item.name}}</li>
與此相關聯的服務是:
angular.module('itemService', ['ngResource']).
factory('Item', function($resource){
return $resource('/api/v1/item/:itemId', {}, {
query: {method:'GET', params:{itemId : ''}, isArray : true},
get: {method:'GET', params:{itemId : ''}, isArray : false},
save: {method:'POST', params:{itemId : ''}, isArray : false},
update: {method:'PUT', params:{itemId : '@_id.$oid'}, isArray : false}
});
});
最後我使用查詢時,所述控制器被initialied加載的項目的列表。
function ItemCtrl($scope, Item) {
$scope.items = Item.query();
....
在同一頁上,我可以創建新項目,並呼籲save()
將它們保存到服務器。但是當我這樣做時,我想更新視圖來顯示新項目,而不是用query()
重新加載整個列表。由於視圖是正式記錄,我假設在成功保存項目後,我應該將其推到項目的末尾。這應該在save()
完成後完成,因此我想知道如何爲保存功能添加/指定回調。
編輯:save()
返回保存項目的副本(如果成功),以便我可以確保該項目已成功保存在服務器上。
也許我誤解,但你不能只通過回調,當你調用Item.save(...)?與此處的User.get()示例類似:http://docs.angularjs.org/api/ngResource.$resource – Jonah 2013-05-01 01:06:26
雖然這可以在大多數情況下使用,但您應該知道將保存的記錄推送到列表中可能不會一個好的做法。它取決於從'query'返回的數據是否與保存返回的數據相同。在一些情況下,'query'只返回最重要的模型屬性,而'save'將具有所有屬性;有時'save'不會返回完整的數據(如自動創建日期)。所以除非你覆蓋所有這些邊緣情況,否則再次實際調用'query'是有意義的。 – Izhaki 2015-05-28 22:56:50