0

我想从模型实例中获取属性,unset()使用模型方法发出请求_idPOSTsave()

但我得到了Uncaught TypeError: Object [object Object] has no method 'call' backbone-min.js因为这条线:

myModel.unset('_id');

我正在使用idAttribute: "_id",所以我尝试了:

myModel.unset('id');

但它不会取消设置_id属性。

4

2 回答 2

2

使用model.unset('_id')应该可以正常工作。我的猜测是错误是由change事件侦听器引发的,无论是在您的代码中还是在某些库代码中。为了不触发事件,您可以使用该silent:true选项。

但是,如果您只是想强制model.save()方法执行 a POST,则无需取消设置该_id属性。

而是覆盖该model.isNew方法。Backbone 使用它来确定模型是新的(应该POST编辑)还是现有的(应该是PUT)。覆盖始终返回 true 的方法将使您的模型POST每次都被编辑:

isNew: function() { return true; }
于 2013-01-31T23:53:22.220 回答
0

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
于 2013-02-01T00:52:19.960 回答