我如何在 Meteor 变量中模拟页面范围?
How do I do an analog of a page scope in variable in Meteor?
我有这个 Meteor 布局:
<template name="layout">
{{> toolbar }}
<div class="container">
{{> yield}}
</div>
</template>
Router.configure({
layoutTemplate: 'layout'
});
我想让工具栏参数显示基于页面的动态内容。我可以通过使用一些反应变量来做到这一点。但是,当同一个客户端同时打开多个页面时会发生什么?每个页面的工具栏都应该显示自己的内容,彼此独立。我该如何实施?
如果您打算在同一页面的多个模板中使用响应式数据,我建议您声明一个响应式变量 (ReactiveVar()
) 或 reactive dictionary
在你的 js 文件的开头(如果你有多个,使用父模板文件),在任何 template.yourTemplate.rendered
或 template.yourTemplate.rendered
之外,你声明它。范围将涵盖页面内调用的所有模板。
反应式字典的例子:
var pageSession = new ReactiveDict();
在您的主模板 rendered
函数中,您设置了反应变量:
pageSession.set("yourVariable", yourValue);
然后你设置了一个助手给return它:
Template.layout.helpers({
toolbar: function(){
return pageSession.get("yourVariable");
}
})
我有这个 Meteor 布局:
<template name="layout">
{{> toolbar }}
<div class="container">
{{> yield}}
</div>
</template>
Router.configure({
layoutTemplate: 'layout'
});
我想让工具栏参数显示基于页面的动态内容。我可以通过使用一些反应变量来做到这一点。但是,当同一个客户端同时打开多个页面时会发生什么?每个页面的工具栏都应该显示自己的内容,彼此独立。我该如何实施?
如果您打算在同一页面的多个模板中使用响应式数据,我建议您声明一个响应式变量 (ReactiveVar()
) 或 reactive dictionary
在你的 js 文件的开头(如果你有多个,使用父模板文件),在任何 template.yourTemplate.rendered
或 template.yourTemplate.rendered
之外,你声明它。范围将涵盖页面内调用的所有模板。
反应式字典的例子:
var pageSession = new ReactiveDict();
在您的主模板 rendered
函数中,您设置了反应变量:
pageSession.set("yourVariable", yourValue);
然后你设置了一个助手给return它:
Template.layout.helpers({
toolbar: function(){
return pageSession.get("yourVariable");
}
})