読者です 読者をやめる 読者になる 読者になる

CollectionViewで初回はemptyViewを表示しない

Marionette.js

あんまりよいやり方じゃないので、http://walf443.hatenablog.com/entry/2014/07/10/120223 を参照してください。

Marionette.jsのCollectionViewのemptyView機能は、collectionが0個になったら勝手に「データがありません」などの表示をしてくれて便利なのだけど、初回だけデータのロード待ちなどの関係で、emptyViewを表示したくない、ということが個人的には多いように思える。

そういうときは、showCollectionメソッドを上書きして、showCollectionが呼ばれたら初めて、options.emptyViewにemptyViewの設定が入るようにすればよい。

var YourEmptyView = Marionette.ItemView.extend({
});
var  YourCollectionView = Marionette.CollectionView.extend({
    showCollection: function() {
        this.options.emptyView = YourEmptyView;
        return Marionette.CollectionView.prototype.showCollection.apply(this, arguments);
    }
});

一度でもコンテンツが追加されたら、showCollectionが呼ばれることになるので、それ以降にデータがなくなったりすると、emptyViewを表示してくれるようになる、というわけ。