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