続: CollectionViewで初回はemptyViewを表示しない
前のやつは、あまりよくない方法だなぁとは思っていたのですが、ちゃんとしたやり方っぽいのがあった。
"collection:rendered" triggerにフックすればよいようだ。Marionetteだと、triggerMethodというのがあって、triggerでも対応できるし、OnCamelCaseみたいなメソッドが生えていたらそれを自動で呼びだしてくれる。
var YourEmptyView = Marionette.ItemView.extend({ }); var YourCollectionView = Marionette.CollectionView.extend({ onCollectionRendered: function() { this.options.emptyView = YourEmptyView; } });
CompositeViewだと、onCompositeRenderedになる。
fadeInアニメーションさせたいときとかも、初回はアニメーションさせたくないけど、動的に追加したタイミングではアニメーションさせたいので、このトリガ内で、
var YourCollectionView = Marionette.CollectionView.extend({ onCollectionRendered: function() { this.OnBeforeItemAdded = function(view) { view.$el.fadeIn('fast'); }; } });
みたいにすると、良い感じ。