为什么在流星模板中插入#if空格键标签会导致空页面被渲染?

时间:2012-04-12 23:16:00

标签: meteor coffeescript spacebars

我正在玩有前途的meteor框架并撞墙。在我的模板中的任何位置插入{{#if something}}{{/if}}会导致呈现空白页面。考虑一下这个模板:

<head>
    <title>MUse - XUse on Meteor</title>
</head>

<body>
    {{> menu}} {{> login }}
    {{> hello}}
</body>

<template name="hello">
    <div class="hello">
      <h1>This is Xuse on Meteor a.k.a. <em>MUse</em></h1>
    </div>
</template>


<template name="login">
    <div class="login">
      <label for="username">Login:</label>
      <input type="text" id="username" value="" placeholder="Login"/>
      <label>Password:</label>
      <input type="password" id="password" value="" placeholder="Password"/>
      <input type="button" id="signin" name="signin" value="Sign in" />
    </div>
</template>

<template name="dashboard">
    <div class="dashboard">
      Hi, {{login_name}}.
    </div>
</template>

<template name="menu">
    <nav>
      <a href="/#dashboard">Dashboard</a> |
      <a href="/#logout">Log out</a> |
      {{#if login_name}}
      <a href="/#{{login_name}}">{{login_name}}</a>
      {{/if}}
    </nav>
</template>

以防coffeescript代码:

if Meteor.is_client
  Template.hello.greeting =  ->  "Welcome to muse."

  Template.login.events =
    'click #signin' :  ->
        console.log "You pressed the 'sign in' button" if console?
        login_name = $('#username').val()
        password = $('#password').val()
        console.log "Credentials: #{login_name} -> #{password}" if console?

  Template.menu.events =
    'click a[href*="dashboard"]' : ->
        console.log "Menu -> Dashboard invoked" if console?
    'click a[href*="logout"]' : ->
        console.log "Menu -> Log out invoked" if console?

if Meteor.is_server
  Meteor.startup ->
    time = new Date
    console.log "#{time} Hi. This is server" if console?

这就是全部 - 仅此而已。删除{{#if...}}序列会导致正确渲染,同时将其留在原位或放置在任何有意义的渲染空页面。任何线索?

我确实尝试过todos示例并且它在同一台机器上工作,因此这不是安装问题。 BTW这台机器是一台可怜的旧笔记本电脑华硕A6Rp搭载Ubuntu 12.04。

1 个答案:

答案 0 :(得分:2)

您还需要在正确的模板上定义咖啡脚本中的login_name,以下是javascript中的示例:

Template.menu.login_name = function () {
  return $('#username').val();
};

coffeescript不是100%,但我相信你能得到照片:

Template.menu.login_name = -> $('#username').val()