我有一个非常简单的资源如下:
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
,应该自行更新观点。
重要的是要意识到调用 $resource 对象方法会立即返回一个空引用(对象或数组取决于 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
保存了对象,我希望将新笔记合并到现有笔记中。请指导我。谢谢