我有一個非常簡單的資源如下:
angular.module('ExampleServices', ['ngResource']).
factory('NoteService', function($q, $rootScope, $resource){
var baseurl = "/api/v1/note/";
var Note = $resource(baseurl, {}, {
// get notes method
get_for_model: {
method: 'GET',
params:{user: '', object_id: ''},
isArray: false
},
// leave note method
leave_note: {
method: 'POST',
}
});
return Note
}
);
和控制器內我稱之爲leave_note
方法如下:
$scope.note = function(){
$scope.note = NoteService.leave_note({
desc: desc,
title: title,
object_id: oid,
});
}
這基本上調用POST方法到我的應用程序rest API和對象被創建。一旦頁面刷新,我可以看到notes
中列出的註釋。但據我所知$resource
應自行更新視圖。從docs
重要的是
報價意識到調用$資源對象方法立即返回一個空引用(對象或數組取決於IsArray的)。一旦從服務器返回數據,現有參考將填入實際數據。
我不能夠使用$rootScope.$apply
的leave_note
方法中,直到我把它定義爲一個功能(如下:)
leave_note: function(){
var note = New Note();
note.desc = desc;
note.title = title;
note.object_id = oid;
note.$save();
$rootScope.$apply();
}
但在上述情況下,呼叫發送到REST API有undefined
請求方法。
我可以想到的另一個問題是,我沒有$scope.note
定義,但有$scope.notes
這是由REST api發送的筆記列表。因此,$scope.note
可能正在更新中,但由於我沒有在模板中呈現note
對象,但呈現notes
使用ng-repeat
,因此我無法看到模板中的更改。
我還嘗試在保存新筆記後重新獲取筆記對象,但它基本上刪除了所有筆記,然後重新呈現所有看起來很難看的筆記(幾乎像刷新頁面一樣)。
我試圖實現的目標是保存一個note
對象,我希望將新音符合併到現有音符中。請指導我。謝謝
downvoter?請解釋你的downvote。 – Amyth 2013-02-26 10:54:22