最佳解释===示例:
// 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(); });
即使自定义$资源操作(由您定义)也可以使用$-prefixed对等方,只要它们不是GET – 请参见http://docs.angularjs.org/api/ngResource.$resource#example_creating-a-custom-put-request.
而不是,并不是所有的动作都有实例方法版本.在实例上调用GET的要点是什么?从官方ngResource文档:
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,[error])
- non-GET instance actions: instance.$action([parameters],[error])