javascript - 是否可以访问使用 Blaze.render() 加载的模板的父数据上下文?

标签 javascript meteor meteor-blaze spacebars

我使用 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/

相关文章:

javascript - JSON 可序列化变量的命名约定

javascript - 为什么 document.getElementById ('files' ) 返回 null?

bash - 带有 MUP 的 meteor : mongodump in bash script used in a cronjob

javascript - Meteor 在客户端跟踪服务器端变量

javascript - MeteorJS 调用rest api 服务器端

javascript - React 通过函数创建菜单项

javascript 提交 2 个表单在 chrome 中不起作用

meteor - 为什么 `this` 关键字在 React onClick() 方法中引用 Window 而不是 Component

debugging - Meteor:服务器端调试

javascript - meteor /火焰 : updating list properties with minimal redraw