Если вы хотите глубже понять представления, вам необходимо понять связь между шаблонами, TemplateInstances и представлениями. Представления - это просто реактивные части DOM. Экземпляры шаблона содержат одно представление, но шаблоны могут создавать больше представлений с помощью функций, которые создают обновляемый контент, например Blaze.with ({{#with}}) или Blaze.if ({{#if}}). Эти «дочерние» представления будут затем хранить родительский указатель, который можно использовать для восстановления дерева представлений.
То, что может помочь вашему пониманию, влияет на взаимодействие шаблонов и представлений в инструментах Chrome. Вы можете найти экземпляр шаблона, используя любой элемент DOM. Вот пример, с которого можно начать:
templateInstance = Blaze.findTemplate($('<some component in dom>')[0])
view = templateInstance.view
Вы можете расширить Blaze, чтобы он содержал findTemplate следующим образом:
Blaze.findTemplate = function(elementOrView) {
if(elementOrView == undefined) {
return;
}
let view = Object.getPrototypeOf(elementOrView) === Blaze.View.prototype
? elementOrView
: Blaze.getView(elementOrView);
while (view && view.templateInstance === undefined) {
view = view.originalParentView || view.parentView;
}
if (!view) {
return;
}
return Tracker.nonreactive(() => view.templateInstance());
};