0

(使用骨干网 0.9.10)

我有一个列表视图,用户可以在其中单击按钮以显示模式视图。列表视图有一个计数器,显示列表中包含的项目数量。单击模态视图中的按钮会在create传递给两个视图的集合上执行。这会在列表视图中触发add事件,然后运行此函数:

renderCount: function () {
    // Container for model count
    var $num = this.$el.find('.num');

    if ($num.length > 0) {
        // 'count' is a value returned from a service that
        // always contains the total amount of models in the
        // collection. This is necessary as I use a form of
        // pagination. It's essentially the same as
        // this.collection.length had it returned all models
        // at once.
        $num.html(this.collection.count);
    }
}

但是,add在集合有机会更新模型计数之前,它似乎会立即被解雇(根据文档应该是这样)。我调查了一下,sync但它似乎并没有做任何事情。

在调用之前如何确保集合已更新renderCount

这是列表视图initialize功能,供参考:

initialize: function (options) {
    this.collection = options.collection;
    this.listenTo(this.collection, 'add remove reset', this.renderCount);

    this.render();
}

编辑: 原来我忘记success在模式视图中重新获取集合。

4

2 回答 2

0

原来我忘记success在模态视图中重新获取集合。

于 2013-08-08T09:59:30.697 回答
0
$num.html(this.collection.count);

应该是:

$num.html(this.collection.size());

Backbone.Collection 使用从下划线导入的方法,这里是列表:http ://backbonejs.org/#Collection-Underscore-Methods

于 2013-08-07T09:48:39.500 回答