我使用Backbone.Collection.create添加新模型。但是Collection.create会自动保存刚刚创建的模型,我想避免使用它。
我不得不改变这个电话:
collection.create(data); //where data represents the data for a new model
进入:
var ModelType = collection.model;
var newModel = new ModelType(data);
collection.add(newModel, {merge: true, silent: true});
另外,我正在查看来源
Collection.create Backbone中的调用
this.add
看起来像
add: function(models, options) {
return this.set(models, _.extend({merge: false}, options, addOptions));
},
我的另一个问题是:
如果我将options参数中的_.extend({merge:false},options,addOptions))
传递给{merge:true}
,那么<{> add()
会覆盖我的var obj = _.extend({},{merge:false},{merge:true});
console.log(obj); //logs {merge:true}
选项吗?
原来那个
_.extend()
但我不知道为什么。我认为最左边的论点会覆盖 <td width="490">Select Event:</td>
<td width="373"><span id="spryselect1">
<select name="event" id="event">
<?php
$query = mysql_query("SELECT * FROM skiptonevents ORDER BY id ASC");
echo "<option value=\"\">Please select one...</option>";
while($result = mysql_fetch_array($query)){
echo "<option value=\"" . $result['name'] . "\">" . $result['name'] . "</option>";
}
?>
</select>
<span class="selectRequiredMsg">Please select an event.</span></span></td>
最右边的参数。
答案 0 :(得分:1)
_.extend
将遍历参数LEFT to RIGHT,使用下一个(RIGHT)对象的属性扩展每个LEFT对象。因此,如果某个属性的设置比已设置的相同属性(LEFT)更远,则RIGHT属性将覆盖之前存储的值。
当您将新选项传递给主干集合时,它们将覆盖先前存储的选项,因此将{merge:true}
传递给add
将覆盖默认的{merge:false}
选项