Я столкнулся с подобной проблемой при настройке плагина jQuery Tools Tooltip.Но у меня был совершенно другой подход, который хорошо работает: запуск пользовательского события в представлении.Насколько я знаю, в Backbone нет встроенного события «вставлено в дом», поэтому я просто сделал это сам.Я не использую Маршрутизатор, но измененный код выше будет выглядеть примерно так:
// In the router:
action: function () {
var container = $('#container');
container.append(myView.render().el));
myView.trigger('rendered');
},
// In the view:
initialize: function() {
this.bind('rendered', this.afterRender, this);
},
render: function (container) {
$(this.el).append($.tmpl(this.template, attrs))
return this;
},
afterRender: function() {
$('label', this.el).inFieldLabels();
}
Я полагаю, преимущество в том, что представление остается в неведении относительно своего контейнера.Недостатком является то, что это как дополнительная строка или два кода.Но если вам нужно установить много плагинов или сделать больше вещей, которые требуют, чтобы элемент был в DOM, он будет работать хорошо (и он будет разделять логику).
Мне действительно нравится метод передачи @ Skilldrickконтейнер для представления, но я все еще чувствую, что имеет смысл, чтобы родительское представление отвечало за вставку дочерних элементов.Я новичок в Backbone, поэтому, пожалуйста, не стесняйтесь комментировать.