Я работаю над базовым приложением, которое каскадирует представления. Существует один корневой вид, который создает свои дочерние представления внутри своего метода initialize
и вызывает просмотр дочернего представления внутри собственного render
. Это может выглядеть следующим образом:Режимы рендеринга каскадных линий
initialize: function(options) {
console.log('body');
this.template = tpl({});
this.headerView = new HeaderView(options);
this.chartView = new ChartView(options);
this.footerView = new FooterView(options);
},
render: function() {
console.log("body");
this.$el.html(this.template);
this.headerView.setElement(this.$el.find('.header')).render();
this.chartView.setElement(this.$el.find('.chart')).render();
this.footerView.setElement(this.$el.find('.footer')).render();
return this;
}
Все виды ребенка идут точно так же - они делают себя внутри своего метода render
и вызвать render
на своих детей.
Мой вопрос: почему после окончательного рендеринга завершается отображение всей страницы? Моя страница довольно сложная, и загрузка занимает 4 секунды, и у меня есть пустая страница. У меня много консольных выходов, где я отчетливо вижу, что некоторые из представлений уже отображены.
Я не понимаю, почему такие большие количества HTML не отображаются «на лету». И я не хочу, чтобы это было так.
не могли бы вы предоставить какой-либо фрагмент примерного кода, чтобы я мог понять, что вы подразумеваете под «рендерингом subview, происходящим после того, как корень el был прикреплен к dom»? Заранее спасибо! – ducin
Кстати, когда точно есть представление 'el', прикрепленное к DOM? Это во время 'return this?'? Какие строки кода отвечают за это? – ducin
Да, я добавлю фрагмент моего ответа. Чтобы ответить на этот вопрос, да, root 'el' прилагается, когда возвращается' render'. 'this' будет объектом View, поэтому код, созданный корневым представлением (главный скрипт Router?), будет делать что-то вроде' $ ('body'). append (new RootView(). render(). el) ' – namero999