是否可以访问使用 Blaze.render() 加载的模板的父数据上下文?
Is it possible to access the parent data context of a template loaded using Blaze.render()?
我使用 Blaze.render()
或 Blaze.renderWithData()
:
在引导箱中加载模板
Blaze.renderWithData(Template.myTemplate,
{"arg1":false, "arg2":"blabla"},
$("#dialogAnchor")[0]);
虽然通常可以在加载了空格键的模板中使用 Template.parentData()
直接访问父数据上下文(例如 {{> myTemplate}}
),但使用 [=12 时则无法做到这一点=] 或 Blaze.renderWithData()
有办法实现吗?
我现在对这个问题很熟悉了,因为没有人回答,所以我是这样处理的:
首先,使用 Blaze.render()
或 Blaze.renderWithData()
添加到页面的模板将没有 Template.parentData()
上下文。
作为变通方法,仍然可以将其作为参数传递,如下所示:
Blaze.renderWithData(Template.myTemplate, {parentDataContext: Template.currentData()})
但是,请注意它不会反应。
如果您需要反应性,还有另一种解决方法。您可以将要共享的上下文元素存储在 ReactiveDict()
(而不是 ReactiveVar()
)中,并将其作为参数传递:
Template.myTemplate.rendered = function(){
this.dataContext = new ReactiveDict()
this.dataContext.set("contextVariable1", this.data.whatever)
this.dataContext.set("contextVariable2", this.data.ImAwesome)
// etc.
Blaze.renderWithData(Template.myTemplate, {parentDataContext: this.dataContext})
}
这样,您可以在父模板和使用 Blaze.render()
或 Blaze.renderWithData()
加载的子模板之间共享响应式本地上下文。
我使用 Blaze.render()
或 Blaze.renderWithData()
:
Blaze.renderWithData(Template.myTemplate,
{"arg1":false, "arg2":"blabla"},
$("#dialogAnchor")[0]);
虽然通常可以在加载了空格键的模板中使用 Template.parentData()
直接访问父数据上下文(例如 {{> myTemplate}}
),但使用 [=12 时则无法做到这一点=] 或 Blaze.renderWithData()
有办法实现吗?
我现在对这个问题很熟悉了,因为没有人回答,所以我是这样处理的:
首先,使用 Blaze.render()
或 Blaze.renderWithData()
添加到页面的模板将没有 Template.parentData()
上下文。
作为变通方法,仍然可以将其作为参数传递,如下所示:
Blaze.renderWithData(Template.myTemplate, {parentDataContext: Template.currentData()})
但是,请注意它不会反应。
如果您需要反应性,还有另一种解决方法。您可以将要共享的上下文元素存储在 ReactiveDict()
(而不是 ReactiveVar()
)中,并将其作为参数传递:
Template.myTemplate.rendered = function(){
this.dataContext = new ReactiveDict()
this.dataContext.set("contextVariable1", this.data.whatever)
this.dataContext.set("contextVariable2", this.data.ImAwesome)
// etc.
Blaze.renderWithData(Template.myTemplate, {parentDataContext: this.dataContext})
}
这样,您可以在父模板和使用 Blaze.render()
或 Blaze.renderWithData()
加载的子模板之间共享响应式本地上下文。