如何从 Meteor 0.8.0 Blaze 中的帮助程序访问模板实例
How to access template instance from helpers in Meteor 0.8.0 Blaze
Meteor 0.8.0 中Template.foo.rendered
回调的行为变化意味着,每当模板的内容发生变化时,我们都不会自动使用渲染的回调作为操作 DOM 的一种方式。实现此目的的一种方法是使用反应式帮助程序,如 https://github.com/avital/meteor-ui-new-rendered-callback。从理论上讲,反应式助手应该仅在相关项目发生变化时才触发来帮助性能。
但是,现在出现了一个新问题:帮助程序不再有权访问模板实例,就像以前的rendered
回调一样。这意味着帮助程序无法完成用于维护模板实例上状态的任何操作。
有没有办法访问模板实例的状态以及使用反应式助手在 Blaze 中触发 DOM 更新?
在最新版本中,您可以使用更方便的Template.instance()
。
现在有Template.instance()
允许您在帮助程序中访问模板的实例。 例如
Template.myTemplate.helpers({
myvalue: function() {
var tmpl = Template.instance();
...
}
});
与 reactiveDict 一起,您可以使用它们在渲染的回调中向下传递值。
Template.myTemplate.created = function() {
this.templatedata = new ReactiveDict();
}
Template.myTemplate.rendered = function() {
this.templatedata.set("myname", "value");
};
Template.myTemplate.helpers({
myvalue: function() {
var tmpl = Template.instance();
return tmpl.templatedata.get('myname');
}
});
这目前在 0.8.0 篇 Meteor 帖子中被跟踪为"首先要添加的内容之一":
https://github.com/meteor/meteor/issues/1529
另一个相关问题是能够在渲染的回调中被动访问数据,这首先避免了这个问题:
https://github.com/meteor/meteor/issues/2010
相关文章:
- {{#each}}内部的Handlebar帮助程序
- Handlebars帮助程序未获取变量的值
- Node Express Handlebars帮助程序未返回函数的结果
- 关闭并重新访问应用程序后,本地存储中的数据不会保留
- 如何让应用程序帮助程序方法在发送的请求为 JS 格式时工作
- 从帮助程序异步返回值
- 无法使用模板帮助程序设置正文类
- 在呈现模板之前调用帮助程序
- 花式框 V2 按钮帮助程序冲突
- 在帮助程序处获取对象值的车把,无需使用数据进行编译
- {{outlet}}、{{yield}、}{render}和{{partial}的ember帮助程序之间存在差异
- 模板帮助程序在session.set之后未更新
- 引导程序窗体帮助程序-状态选择器-选择类
- 如何创建可以使用 AngularJS 上的控制器访问的帮助程序类
- 访问 Meteor 事件处理程序中的模板帮助程序字典
- 访问内部帮助程序中的外部帮助程序的结果
- 访问Jasmine中的Meteor模板帮助程序函数进行集成测试
- 访问表单上输入帮助程序的属性
- 如何在句柄帮助程序中访问父项
- 如何从 Meteor 0.8.0 Blaze 中的帮助程序访问模板实例