什么是 'Template.instance().view'?
What is 'Template.instance().view'?
我在 Blaze 文档中阅读了 [Template.instance().view
]1。
我也看了Blaze.view()
。
我什至在控制台日志中看到了视图对象。
但是看不懂
请问有谁能更直观流畅的解释一下吗? :)
如果你想更深入地理解Views,你需要理解Templates、TemplateInstances和Views之间的关系。视图只是 DOM 的反应部分。模板实例包含一个视图,但模板可以通过创建可呈现内容的函数创建更多视图,例如 Blaze.with ({{#with}}) 或 Blaze.if ({{#if}})。然后,这些 "child" 视图将存储一个父指针,您可以使用它来重建视图树。
了解模板和视图在 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());
};
我在 Blaze 文档中阅读了 [Template.instance().view
]1。
我也看了Blaze.view()
。
我什至在控制台日志中看到了视图对象。
但是看不懂
请问有谁能更直观流畅的解释一下吗? :)
如果你想更深入地理解Views,你需要理解Templates、TemplateInstances和Views之间的关系。视图只是 DOM 的反应部分。模板实例包含一个视图,但模板可以通过创建可呈现内容的函数创建更多视图,例如 Blaze.with ({{#with}}) 或 Blaze.if ({{#if}})。然后,这些 "child" 视图将存储一个父指针,您可以使用它来重建视图树。
了解模板和视图在 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());
};