【问题标题】:Difference between .save and $save to resource in angularjs.save 和 $save 到 angularjs 中资源的区别
【发布时间】:2014-02-08 02:24:58
【问题描述】:

我已经看到代码同时调用 $save 和 save 到 $resource 的角度。

有什么区别,什么时候使用?

【问题讨论】:

    标签: angularjs angular-resource


    【解决方案1】:

    最好的解释===例子:

    // 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])

    【讨论】:

      【解决方案2】:

      $save 是由$resource 的动作添加的方法。 save 可以是特殊资源的方法。

      所有动作都有$ 前缀方法。在这里阅读更多:http://docs.angularjs.org/api/ngResource.$resource

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 2016-02-03
        • 1970-01-01
        • 2016-01-08
        • 1970-01-01
        • 2013-06-06
        相关资源
        最近更新 更多