web-dev-qa-db-ja.com

.saveと$ save toresourceのangularjsの違い

$savesaveの両方を角度のある$ resourceに呼び出すコードを見てきました。

違いは何ですか?いつどちらを使用しますか?

15
happygilmore

最良の説明===例:

// 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ドキュメントから:

クラスオブジェクトまたはインスタンスオブジェクトのアクションメソッドは、次のパラメータを使用して呼び出すことができます。

  • HTTP GET「クラス」アクション:Resource.action([parameters]、[success]、[error])
  • 非GET「クラス」アクション:Resource.action([parameters]、postData、[success]、[error])
  • 非GETインスタンスアクション:instance。$ action([parameters]、[success]、[error])
15
vucalur

$saveは、$resourceのアクションによって追加されるメソッドです。保存は、特別なリソースによるメソッドにすることができます。

すべてのアクションには、$プレフィックス付きのメソッドがあります。詳細はこちら: http://docs.angularjs.org/api/ngResource 。$ resource

0
Matjaz Lipus