У меня есть Marionette.CollectionView
, который отображает список ItemView
s. Во время render()
я использую модель
ItemView для рисования некоторого SVG, используя Raphael.
Raphael требует, чтобы я указал высоту и ширину его холста, которые я обычно беру из Проблема в том, что this.$el
. Однако $el
(как пустой Marionette.CollectionView
не добавляет дочернее представление в DOM до тех пор, пока оно не будет отрисовано. Как я могу переопределить это поведение без повторной реализации половины CollectionView
?Пример кода
// Renders a single object.
var ItemView = Marionette.ItemView.extend({
template: "#item-view-template",
onRender: function() {
var svgEl = this.$el.find("div.svg-canvas");
// Raphael needs the element's width and height, which
// is 0 until this.$el is in the DOM.
var paper = Raphael(svgEl.get(0), svgEl.height(), svgEl.width());
// ... draw some SVG...
}
});
// Renders a collection of objects.
var ListView = Marionette.CollectionView.extend({
itemView: ItemView,
model: MyModel
});
// Main point of entry.
MyApp.show = function() {
var collection = new MyCollection();
var listView = new ListView({ collection: collection });
MyApp.mainRegion.show(listView);
collection.fetch();
};