我使用 Blaze.render()
在引导箱中加载模板或 Blaze.renderWithData()
:
Blaze.renderWithData(Template.myTemplate,
{"arg1":false, "arg2":"blabla"},
$("#dialogAnchor")[0]);
虽然通常可以使用
Template.parentData()
直接访问父数据上下文。在加载有空格键的模板中(例如 {{> myTemplate}}
),使用 Blaze.render()
时不可能这样做或 Blaze.renderWithData()
有没有办法做到这一点?
最佳答案
我现在对这个问题很熟悉了,因为没有人回答,所以我是这样处理的:
首先,使用 Blaze.render()
添加到页面的模板或 Blaze.renderWithData()
将没有 Template.parentData()
语境。
作为一种解决方法,仍然可以将其作为参数传递,如下所示:
Blaze.renderWithData(Template.myTemplate, {parentDataContext: Template.currentData()})
但是,请注意 它不会 react .
如果您需要 react 性,还有另一种解决方法。您可以将要共享的上下文元素存储在
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()
加载的子模板之间共享响应式(Reactive)本地上下文。或 Blaze.renderWithData()
.
关于javascript - 是否可以访问使用 Blaze.render() 加载的模板的父数据上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32331933/