如何在将Backbone View插入DOM时指定方法回调?

时间:2012-03-06 00:21:26

标签: javascript backbone.js coffeescript backbone-events

我需要在将视图插入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时的回调也很有用。)

2 个答案:

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