Как указать обратный вызов метода при вставке Backbone View в DOM? - PullRequest
4 голосов
/ 06 марта 2012

Мне нужно запустить скрипт макета, как только мои представления будут вставлены в DOM.Итак ...

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

Проблема в том, что мне нужно вставить новые виджеты в несколько разных представлений и повторно вызвать этот скрипт в нескольких разных местах, что не является СУХИМЫМ.Мне интересно, как я могу определить isotope в классе View.

Будет ли хорошей идеей определить прослушиватель событий, за которым нужно следить, добавлять его в «.widgets» и запускать скрипт?Есть ли встроенный способ построения представлений, которые хорошо подходят для добавления их в DOM?

(В этом отношении было бы также полезно определить обратный вызов для случая, когда представление удалено из DOM.)

Ответы [ 2 ]

0 голосов
/ 06 февраля 2013

использование:

var self = this;    
this.$el.on('DOMNodeInserted', function(evt){   
self.isotope();
$(evt.target ).stopPropagation();
})
0 голосов
/ 06 марта 2012

Как насчет вызова изотопа каждый раз, когда представление render ed?Вам нужно быть осторожным, чтобы вызывать render() только после того, как виджет введен, но это должно решить вашу проблему:

 //in Backbone.view.extend({
   initialize: function() {
     // fix context for `this`
     _.bindAll(this);
   },
   render: function() {
     // .. do rendering..
     this.isotope();
     return this;
   }
 // }) // end .extend
...