条件隐藏和显示模板

时间:2016-02-10 17:11:50

标签: meteor

通过Session使用流星反应,我希望这段代码能够显示模板" mainMenu"如果变量" showMainMenu"设置为true,应该在首次运行时发生,但我看不到显示的模板 什么地方出了错?谢谢

/client/session.js
Session.set('showMainMenu', true);



//---main.html---------

head>
  <title>Tasks</title>
</head>

<body>
  <header>
    <nav class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="row">
          {{> header}}
        </div>
      </div>
    </nav>
  </header>
  {{#if showMainMenu}}
    {{> mainMenu}}
  {{/if}}
</body>
&#13;
&#13;
&#13;

&#13;
&#13;
microscope
├── README.txt
├── client
│   ├── main.html
│   ├── main.js
│   ├── session.js
│   ├── stylesheets
│   │   └── style.css
│   └── templates
│       ├── header
│       │   ├── header.html
│       │   └── header.js
│       └── mainMenu
│           ├── main_menu.html
│           └── main_menu.js
├── lib
│   └── collections
│       └── task.js
├── public
│   └── abc.png
└── server
    ├── collections.js
    └── publications.js
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

您的模板无法通过名称引用Session变量来访问会话,就像您正在做的那样

{{#if showMainMenu}}
  {{> mainMenu}}
{{/if}}

相反,你有几个选择,但你可以很容易地制作一个模板助手

Template.body.helpers({
  showMainMenu: function() {
    return Session.get('showMainMenu');
  }
});

我的建议

创建一个可以返回Session变量

结果的全局帮助器
Template.registerHelper('session', function( value ) {
  return Session.get(value);
});

然后,在你的html中:

{{#if (session 'showMainMenu')}}
  {{> mainMenu}}
{{/if}}