Что такое "Template.instance(). View"?
Я читаю [ Template.instance().view
] 1 в Blaze Docs.
Тоже читаю Blaze.view()
,
Я даже видел объект просмотра в журнале консоли.
Но я не могу понять.
Может ли кто-нибудь объяснить это более интуитивно и плавно, пожалуйста?:)
1 ответ
Если вы хотите глубже понять представления, вам необходимо понять связь между шаблонами, 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());
};