4

将视图插入 DOM 后,我需要立即运行布局脚本。所以...

$(".widgets").append(widgets.render().el)
$(".widgets .dashboard").isotope # <-- This needs to be called whenever new widgets are inserted

问题是我必须在几个不同的视图中插入新的小部件,并在几个不同的地方重新调用这个脚本,这不是 DRY。我想知道如何isotope在 View 类中定义。

定义一个事件侦听器来监视附加到“.widgets”并运行脚本是一个好主意吗?是否有一种内置的方式来构建视图,当它们被添加到 DOM 时会很智能?

(就此而言,为从 DOM 中删除视图时定义回调也很有用。)

4

2 回答 2

0

利用:

var self = this;    
this.$el.on('DOMNodeInserted', function(evt){   
self.isotope();
$(evt.target ).stopPropagation();
})
于 2013-02-06T02:10:11.023 回答
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
于 2012-03-06T00:26:47.140 回答