如何使用Backbone在集合上设置模型列表

时间:2013-06-19 10:37:30

标签: backbone.js collections data-manipulation

我正在尝试更新与我models关联的AppView Collection列表,但我不知道该怎么做。

我想在render函数上执行此操作,目的是设置一个我称为treeId的特定属性,默认为0,我会将其更改为渲染后的不同值,以便为每个模型在html模板中设置不同的treeId html attribute

render: function() {
    console.log("View - App.render");
    this.statusOpenedFolder();
    var parentTreeId = this.parentTreeId;

    _.each(this.collection.toJSON(), function (model, index) {
        model.treeId = parentTreeId + index;
        console.log("treeId edit " + model.treeId);
    });

    var assetsChildren = _.template(this.tmplAssetsChildren, {items:this.collection.toJSON()});
    this.$currentTarget.find("ul").remove();
    this.$currentTarget.append(assetsChildren);
    this.delegateEvents();

    return;
}

基本上我需要它来获取树状菜单的子项。

显然_.each方法不起作用,因为我在没有任何参考集合的情况下这样做,我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在this.collection.models功能中使用_.each,或只使用this.collection.each,因为它在Backbone.Collection中混合使用。但是,我不确定您是否要在每次渲染时重新计算它 - 我猜this.parentTreeId不会更改,因此您可以在initialize中执行此操作。