backbone.js更新其属性已更改的模型

时间:2014-03-30 19:32:08

标签: javascript backbone.js

在SQL中,您将使用UPDATE命令更新行,如何在SQL中更新模型,其中的属性已经从另一个JSON对象更改。

我想以这样的方式执行此操作,以便它只更改已更改的属性而不是整个模型,我已经看到了model.changedAttributes()命令,但不知道如何使用它。 / p>

由于

编辑:

我试过这个:

//code to update model
usersCollection.fetch({
  success: function() {
    var getModel = usersCollection.where(checkIDJSON);
    //update that partcular attribute
    getModel.set('interest', 'rolling stones');
    console.log("Users:" + usersCollection.toJSON());
  }, error: function() {
    // something is wrong..
  }                     
}); 

返回错误,“未定义不是函数”

2 个答案:

答案 0 :(得分:0)

据我所知,您希望使用RESTful服务将数据从模型保存到服务器,并且不希望发送模型的所有数据,而只发送那些仅已更改的属性。为此,您应该使用patch方法:

model.save(attrs, {patch: true})

在这种情况下,您只能发送attrs

model.save({patch: true})

只是已更改的属性(在这种情况下attrs将为model.changedAttributes()

来自主干文档:

相反,如果您只想将更改的属性发送到服务器,请致电model.save(attrs, {patch: true})。您只需传入属性即可向服务器收到HTTP PATCH请求。

答案 1 :(得分:0)

我现在正在研究这个问题。

您的逻辑从文档中看起来是正确的。在我getModel.set('interest', 'rolling stones');之后

getModel.save(); //saves the model to the database (or whatever you have setup)
userCollection.reset(); // reloads the collection from the database (or whatever you have setup.

如果没有使用Backbone.sync方法,那么为了使骨干网能够正常工作,我建议在你的课程中覆盖这些方法。