我在保存对集合中各个模型的更改时遇到了一些麻烦。已经加载的模型(通过集合.reset())将发布POST(就像它们是新的),而不是预期的PUT。.save()在现有模型上导致POST而不是PUT
下面是我采用的方法:
APPVIEW
负载通过this.model.childcollection.reset子集(JSON数据从服务器);
在它的渲染功能,集合中的每个项目创建一个新的childview并对其进行渲染:
render: function() { var el = this.el; this.model.childcollection.forEach(function(s) { var view = new ChildView({ model: s }); el.append(view.render().el); }); return this; },
ChildView
在它的事件之一,它正在改变底层模式的一些价值并呼吁保存:
this.model.set( { ValueA: somevalue, ValueB: somevalue }, { error: function() { console.log("Error saving model"); }, success: function() { console.log("Model change saved"); } }); this.model.save();
观察:
- POST(无子ID)被调用,而不是PUT(与子ID)
- 子元素都标识设置
谁能告诉我为什么会这样呢?
感谢 - 这似乎一直是问题 - “标识'服务器端模型的属性名称被大写。将它改为小写似乎已经修复了它。 – UpTheCreek
或者,在扩展Backbone.Model时,您可以通过使用'idAttribute'选项更改Backbone认为ID字段的字段名称。 –