【发布时间】:2014-02-08 02:24:58
【问题描述】:
我已经看到代码同时调用 $save 和 save 到 $resource 的角度。
有什么区别,什么时候使用?
【问题讨论】:
标签: angularjs angular-resource
我已经看到代码同时调用 $save 和 save 到 $resource 的角度。
有什么区别,什么时候使用?
【问题讨论】:
标签: angularjs angular-resource
最好的解释===例子:
// by writing '{ id: '@id' }' we want the id to be taken from 'id' parameter in request data, hence the '@' sign. Note that this mechanism is available for non-GET RQs only:
var Notes = $resource('/notes/:id', { id: '@id' });
var noteId = "my_note1";
// below we specify 'id' explicitly - has to be done for GET RQ:
// operations on our note are done inside callback function, just to make sure that the note is resolved:
var note = Notes.get({ id: noteId }, function () {
// let's make some changes:
note.topic = "A brand new topic here!";
// save using $resource "static" action (aka "class" action). 'id' is taken from data object:
Notes.save(note);
// We can overwrite 'id' just like this:
Notes.save({ id: "some_other_noteId" }, note);
// even more changes:
note.body = "Blah blah blah, new boring body is here";
// this time save using instance action. Again: 'id' is taken from data object:
note.$save();
// changing id with instance action? there you go:
note.$save({ id: "yet_another_noteId" });
// Naturally, we could just:
note.id = "OMG_how_many_of_those_noteIds_has_he_left";
Notes.save(note);
// ... and with instance action:
note.id = "OK_he_wins";
note.$save();
});
即使自定义 $resource 操作(由您定义)也有其 $ 前缀对应项,只要它们不是 GET - 请参阅 http://docs.angularjs.org/api/ngResource.$resource#example_creating-a-custom-put-request。
不,并非所有操作都有实例方法版本。在实例上调用 GET 有什么意义?来自官方ngResource docs:
类对象或实例对象的动作方法可以通过以下参数调用:
- HTTP GET “类”操作:Resource.action([parameters], [success], [error])
- 非 GET “类”操作:Resource.action([parameters], postData, [success], [error])
- 非 GET 实例操作:instance.$action([parameters], [success], [error])
【讨论】:
$save 是由$resource 的动作添加的方法。 save 可以是特殊资源的方法。
所有动作都有$ 前缀方法。在这里阅读更多:http://docs.angularjs.org/api/ngResource.$resource
【讨论】: