我如何在 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.renderedtemplate.yourTemplate.rendered 之外,你声明它。范围将涵盖页面内调用的所有模板。

反应式字典的例子:

var pageSession = new ReactiveDict();

在您的主模板 rendered 函数中,您设置了反应变量:

pageSession.set("yourVariable", yourValue);

然后你设置了一个助手给return它:

Template.layout.helpers({
    toolbar: function(){
        return pageSession.get("yourVariable");
    }
})