我在Blaze文档中阅读了[Template.instance().view
] 1。
我也读了Blaze.view()
。
我什至在控制台日志中也看到了视图对象。
但是我听不懂。
请问有人可以更直观,更流畅地解释它吗? :)
答案 0 :(得分:0)
如果您想更深入地了解View,则需要了解Templates,TemplateInstances和View之间的关系。视图只是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());
};