是否可以访问使用 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() 加载的子模板之间共享响应式本地上下文。