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();
}

EDIT:successモーダルビューで コレクションを再取得するのを忘れていたことがわかりました。

4

2 に答える 2

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 に答える