骨干自动渲染视图不合需要

时间:2015-07-30 21:52:55

标签: javascript backbone.js

我使用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> 最右边的参数。

1 个答案:

答案 0 :(得分:1)

_.extend将遍历参数LEFT to RIGHT,使用下一个(RIGHT)对象的属性扩展每个LEFT对象。因此,如果某个属性的设置比已设置的相同属性(LEFT)更远,则RIGHT属性将覆盖之前存储的值。

当您将新选项传递给主干集合时,它们将覆盖先前存储的选项,因此将{merge:true}传递给add将覆盖默认的{merge:false}选项