2

嗨,我有一个带有把手的 ember 应用程序 if else 语句总是显示 if 部分而不是 else

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

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

我已经阅读过这里这里 以及我忘记的许多其他地方:( 试图学习如何在我的控制器之前加载我的初始化程序

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

 <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}}

应用程序.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(),
});
4

1 回答 1

7

您的 if 语句的值被引用。

{{#if 'registered'}}

应该:

{{#if registered}}

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

于 2015-04-20T23:39:41.137 回答