【问题标题】:Meteor: Sharing a template variable between templatesMeteor:在模板之间共享一个模板变量
【发布时间】:2015-12-14 22:12:28
【问题描述】:

我正在构建一个 UI,它使用户能够根据他们当前使用的过滤器字段过滤结果。目前这一切都在一个单一的用户界面中,结构如下:

Template.clientList.onCreated(function(){
  var instance = this;

  // filterDictionary manages the filter parameters. 
 instance.filterDictionary = new ReactiveDict();
 instance.filterDictionary.set("filterName", null);
 instance.filterDictionary.set("filterDate", null);
 instance.filterDictionary.set("filterId", null);

 // subscription management goes here, uses filterDictionary. 

});

我现在想在另一个模板中重用过滤器,并希望将它嵌入到子模板中。所以这应该变成这样:

Template.filterTemplate.onCreated(function(){
  var instance = this;
  instance.filterDictionary = instance.canIAccessChildTemplates.filterDictionary;

 // subscription management goes here, uses filterDictionary.
 // subscriptions will also use parameters specific to the template they are in.
});

在孩子之间访问数据的最佳方式是什么?我真的不希望这是一个全局变量,因为可以想象你可能希望这两个 ui 元素彼此相邻,即同时显示 2 个视图并且它们不能将它们的更改应用于同一个 ReactiveDict。

【问题讨论】:

  • 您可以使用Session共享变量。
  • 我特别不想使用Session,因为我可能会在不同的地方重复使用这个模板并且会话将是全局的。按照柯蒂斯的以下回答设置这个效果非常好。

标签: templates meteor


【解决方案1】:

如果您将 filterTemplate 嵌入到 clientList 模板中,您可以传递如下数据:

{{> filterTemplate filterDictionary=filterDictionary}}

其中filterDictionaryclientList 的模板助手。如果它没有嵌入到其他模板中,则必须使用 Session 变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-23
    • 2016-12-09
    • 1970-01-01
    相关资源
    最近更新 更多