Что такое "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());
};
Другие вопросы по тегам