Javascript 如何取消设置_id主干模型属性?
我想Javascript 如何取消设置_id主干模型属性?,javascript,backbone.js,backbone-model,Javascript,Backbone.js,Backbone Model,我想取消设置()模型实例的\u id属性,使用保存()模型方法发出POST请求 但是我得到了一个未捕获的TypeError:Object[Object Object]没有方法'call'backbone-min.js,因为这行: myModel.unset('_id'); 我正在使用idAttribute:“\u id”,因此我尝试: myModel.unset('id'); 但是它不会取消设置\u id属性。使用模型。取消设置(“\u id”)应该可以正常工作。我猜这个错误是由change
取消设置()
模型实例的\u id
属性,使用保存()
模型方法发出POST
请求
但是我得到了一个未捕获的TypeError:Object[Object Object]没有方法'call'backbone-min.js
,因为这行:
myModel.unset('_id');
我正在使用idAttribute:“\u id”
,因此我尝试:
myModel.unset('id');
但是它不会取消设置\u id
属性。使用模型。取消设置(“\u id”)
应该可以正常工作。我猜这个错误是由change
事件侦听器抛出的,可能是在您的代码或某些库代码中。为了不触发事件,可以使用silent:true
选项
但是,如果您只是想强制model.save()
方法执行POST
,则无需取消设置\u id
属性
而是重写该方法。主干网使用它来确定模型是新的(应该是POST
ed)还是现有的(应该是PUT
)。重写该方法以始终返回true将使您的模型每次都被POST
ed:
isNew: function() { return true; }
主干将属性存储在模型中名为
attributes
的对象中。属性\u id
,虽然该模型的id的代表不是用来确定模型是否为新的
有一个名为id
(属性的同级)的属性,用于进行isNew()
确定
如果要强制发布POST
,则需要删除id
属性:
var id = model.id;
model.unset('_id');
delete model.id;
model.save(); // this will do a POST
小心这一个,从现在起,你设置的模型将永远是新的,无论什么。如果你想做一个PUT
,那就需要应用旧的行为。有点晚了,但我支持乔的观点。不要覆盖isNew
以强制POST请求。我认为这并不完全准确。主干网确实使用model.id
字段来确定模型是否是新的
,但是使用unset
将进行set
调用,当idAttribute
被清除时,该调用将清除id
。请参阅。@dule主干确实使用model.id
来执行isNew
检查——这就是我在第二段中所说的。我只是想澄清model.id
不同于model.attributes.id
(这是getter使用的)。的可能重复项不要取消设置\u id
属性或id
属性以发出POST请求。的可能重复项