我需要在将视图插入DOM后立即运行布局脚本。所以......
$(".widgets").append(widgets.render().el)
$(".widgets .dashboard").isotope # <-- This needs to be called whenever new widgets are inserted
问题是我必须插入几个不同视图的新窗口小部件,并在几个不同的地方重新调用此脚本,这不是DRY。我想知道如何在View类中定义isotope
。
定义一个事件监听器来监视是否附加到“.widgets”并运行脚本是不是一个好主意?是否有内置的方法来构建视图,这些视图在添加到DOM时是否很明智?
(就此而言,定义从DOM中删除View时的回调也很有用。)
答案 0 :(得分:0)
每次视图render
时调用同位素怎么样?注入窗口小部件后,您需要小心调用render()
,但这应该解决您的问题:
//in Backbone.view.extend({
initialize: function() {
// fix context for `this`
_.bindAll(this);
},
render: function() {
// .. do rendering..
this.isotope();
return this;
}
// }) // end .extend
答案 1 :(得分:0)
使用:
var self = this;
this.$el.on('DOMNodeInserted', function(evt){
self.isotope();
$(evt.target ).stopPropagation();
})