【问题标题】:Reactive conditional template rendering反应式条件模板渲染
【发布时间】:2016-04-14 19:04:34
【问题描述】:

此 Meteor 代码需要根据帮助程序 display 的值呈现正确的模板,该帮助程序在启动时起作用,但是当它的值稍后通过一些点击事件发生变化时,display 中的值从“mainMenu " 到 "content",代码不会使用正确的模板重新渲染代码。

Template.registerHelper('display', () => {
  return Session.get('display');
});
<template name="index">
  {{#if (display 'mainMenu')}}
    {{> mainMenu}}
  {{else}} {{#if (display 'content')}}
    {{> Template.dynamic template="content" data=taskInputs}}
  {{/if}}{{/if}}
</template>

为什么它不起作用以及如何解决它?谢谢

【问题讨论】:

  • 为什么你的助手不接受任何参数?
  • 我不需要,但你为什么要问?有必要吗?
  • 你有一个没有任何参数的辅助方法,它从 Session 中返回一个值,但是你在调用这个辅助方法时提供了像“mainMenu”、“内容”这样的参数?
  • @Areca 哦。我懂了。我想获取会话中的内容,如果是 mainMenu,则显示 mainMenu 模板,但如果值为“content”,则显示内容模板。所以看起来我不知道如何使用这个机制。
  • 那么函数定义将是displayedTemplate =&gt; Session.get('display') === displayedTemplate,这样你就可以使用传递的参数并运行你想在函数体中运行的任何逻辑。

标签: templates meteor


【解决方案1】:

我想这就是你要找的:

Template.registerHelper('display', (input) => {
  return Session.get('display')==input;
});

Template.index.onCreated(function() {
  Session.set('display',null);
});

<template name="index">
  {{#if display 'mainMenu'}}
    {{> mainMenu}}
  {{else}} 
    {{#if display 'content'}}
      {{> Template.dynamic template="content" data=taskInputs}}
    {{/if}}
  {{/if}}
</template>

它对我有用。

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 2019-03-25
    • 2021-05-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    相关资源
    最近更新 更多