我想从模型实例中获取属性,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
属性。
我想从模型实例中获取属性,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
属性。
使用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 ) 的属性,用于进行确定。id
attributes
isNew()
如果要强制 a POST
,则需要删除该id
属性:
var id = model.id;
model.unset('_id');
delete model.id;
model.save(); // this will do a POST