Ember.js handlebars if 语句有什么问题?

What is wrong with this Ember.js handlebars if statement?

你好,我有一个 ember 应用程序,它有一个 if else 语句,它总是显示 if 部分而不显示 else

我已经阅读了 ember 文档中的所有内容 here and here 并在网上搜索了无数次:(

我的控制器和模板的代码出现在下面我认为问题可能与我的会话初始化程序有关,我的控制器引用没有在我的控制器之前加载?

我已阅读 here and here 和许多其他我忘记的地方:( 试图学习如何在我的控制器之前加载我的初始化程序

下面是我的应用程序控制器和应用程序模板的代码

 <nav role="navigation" class="navbar navbar-default navbar-fixed-top">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" data-target="#navbarCollapse" data-toggle="collapse" class="navbar-toggle">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            {{#link-to "index" class="navbar-brand"}}Hide The Word{{/link-to}}
        </div>
        <!-- Collection of nav links and other content for toggling -->
        <div id="navbarCollapse" class="collapse navbar-collapse">
            <ul class="nav navbar-nav">
              {{#if 'registered'}}
                <li>{{#link-to "user" userId}}{{user}}{{/link-to}}</li>
                <li>{{#link-to "logout"}}Logout{{/link-to}}</li>
              {{else}}
                <li>{{#link-to "login" class = "navbar-right"}}{{user}}{{/link-to}}</li>
                <li>{{#link-to "login" class = "navbar-right"}}Sign In{{/link-to}}</li>
              {{/if}}
              <button{{action 'test'}}>test</button>
            </ul>
        </div>
    </div>
  </nav>
{{outlet}}

application.js

import Ember from 'ember';

export default Ember.Controller.extend({
    user:function(){
        if(this.get('session').authed){
            var provider = this.get('session').authData.auth.provider,
            name = this.get('session').authData[provider].displayName;
            return name;
        }else{
            return 'Hi Guest'
        }
    }.property(),

    registered:function(){
        if(this.get('session').authed){
            return true;
        }
        else{
            return false;
        }
    }.property(),
});

你的 if 语句的值被引用了。

{{#if 'registered'}}

应该是:

{{#if registered}}

我认为这会解决问题。使用引号,它将始终评估为 true。