Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何取消设置_id主干模型属性?_Javascript_Backbone.js_Backbone Model - Fatal编程技术网

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请求。的可能重复项