Понимание жизненного цикла Backbone и Marionette View
я новичок в этом мире, и мне нужно понять некоторые из концепций позвоночника и марионетки. Здесь я пытаюсь объяснить некоторые из понятий, которые я изучаю. Было бы здорово иметь некоторую обратную связь на них.
на render
функция определяет логику отрисовки шаблона. Когда он закончен,onRender
обратного вызова вызывается. Здесь я предполагаю, что визуализированный вид не был прикреплен к DOM. Он состоит из tagName
(по умолчанию -div
), который содержит шаблон, который я прикрепил к нему. Чтобы конкретно вставить этот тег в DOM, мне нужно добавить где-то. Я ошибаюсь?
В общем, я делаю следующее.
var view = new MyView();
view.render();
$("container").append(view.$el);
марионетка расширяет костяк с концепцией регионов. The show
метод может быть вызван в области для представления определенного представления.
var view = new MyView();
region.show(view);
в этом случае show
метод будет вызывать
1 ответов
как бы то ни было, я считаю, что все, что вы сказали, более или менее правильно.
глядя на источник (доступно здесь -- ищите "DomRefresh") биты MonitorDOMRefresh смешиваются с каждым представлением и добавляют этот API:
return function(view){
view.listenTo(view, "show", function(){
handleShow(view);
});
view.listenTo(view, "render", function(){
handleRender(view);
});
};
так действительно, все, что происходит, это вложение 2 прослушивателей событий в представление и обратные вызовы (handleShow
/handleRender
) установить логическое _isShown
или _isRendered
и звонок triggerDomRefresh
, которым говорит:
function triggerDOMRefresh(view){
if (view._isShown && view._isRendered){
if (_.isFunction(view.triggerMethod)){
view.triggerMethod("dom:refresh");
}
}
}
Итак, вот вы идете... onDomRefresh
будет вызываться в любое время, когда представление было отображено, показано, а затем повторно отображено.
надеюсь, что это поможет!