私はリストビューでバックボーンモデルのコレクションをレンダリングします。各モデルには、のような独自のlistItemViewがあります。バックボーン展開されたビューとゾンビ
var els = [];
_.each(this.collection.models, function(model){
var view = new TB_BB.RequestItemView({model : model});
els.push(view.render().el);
});
$('#request-list').append(els);
各ItemsViewは、Clickイベント(サーバーへの呼び出しが行われた場合)で展開できます。
showDetails : function() {
var m = new TB_BB.RequestDetails({id : this.model.get('id')});
var outerthis = this;
m.fetch({success : function() {
var det = new TB_BB.RequestDetailsView({model : m, el : outerthis.el, current : outerthis, template : '#request-expanded-template'});
det.render();
}});
}
したがって、この拡張ビューは現在のアイテムのelに表示されます。私は現在のビュー(外部)への参照を渡していることに気づいたかもしれませんが、これは拡大ビューを閉じるときにこのビューのゾンビを避けるためでした。
拡大ビューでは、非表示のビューを非表示にし、元の要素を表示する非表示のメソッドがあります(現在は非拡張ビューへの参照)。
hideDetails : function() {
$(this.el).empty();
this.options.current.render();
}
私は、これはこれを行うための最善の方法ではないかなり確信している - 最良の方法はどのようになるかわからないけど?この場合、(元のビューを参照する)ヒドゥンテイルを呼び出すときにはゾンビはありません。しかし、私は 'showDetails'ビューが呼び出され、新しいゾンビが閉じられるたびにそれを推測していますか?誰もがリストのビューを拡大するより良い方法を教えてもらえますか?
面白いアプローチ - ありがとうございます – Xrender