我想从模型实例中获取属性,unset()使用模型方法发出请求。_idPOSTsave()
但我得到了Uncaught TypeError: Object [object Object] has no method 'call' backbone-min.js因为这条线:
myModel.unset('_id');
我正在使用idAttribute: "_id",所以我尝试了:
myModel.unset('id');
但它不会取消设置_id属性。
我想从模型实例中获取属性,unset()使用模型方法发出请求。_idPOSTsave()
但我得到了Uncaught TypeError: Object [object Object] has no method 'call' backbone-min.js因为这条线:
myModel.unset('_id');
我正在使用idAttribute: "_id",所以我尝试了:
myModel.unset('id');
但它不会取消设置_id属性。
使用model.unset('_id')应该可以正常工作。我的猜测是错误是由change事件侦听器引发的,无论是在您的代码中还是在某些库代码中。为了不触发事件,您可以使用该silent:true选项。
但是,如果您只是想强制model.save()方法执行 a POST,则无需取消设置该_id属性。
而是覆盖该model.isNew方法。Backbone 使用它来确定模型是新的(应该POST编辑)还是现有的(应该是PUT)。覆盖始终返回 true 的方法将使您的模型POST每次都被编辑:
isNew: function() { return true; }
Backbone 将属性存储在模型中调用的对象attributes中。属性_id虽然代表该模型的 ID,但并不用于确定模型是否为新模型。
有一个名为(sibling of ) 的属性,用于进行确定。idattributesisNew()
如果要强制 a POST,则需要删除该id属性:
var id = model.id;
model.unset('_id');
delete model.id;
model.save(); // this will do a POST