javascript - 这个 Ember.js handlebars if 语句有什么问题?

标签 javascript ember.js ember-cli ember-controllers member-initialization

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

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

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

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

下面是我的应用程序 Controller 和我的应用程序模板的代码

 <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(),
});

最佳答案

您的 if 语句的值被引用。

{{#if 'registered'}}

应该是:

{{#if registered}}

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

关于javascript - 这个 Ember.js handlebars if 语句有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29760330/

相关文章:

javascript - 在测试 Ember.js (ember-cli) 应用程序时在拆解中获取 “App is not defined”

javascript - 搜索另一个对象数组中的值列表,并使用单个 for 循环更改对象数组中的一个键

javascript - 按下键并运行 jquery 函数

javascript - EmberJS - 将项目重构为组件会停止查询参数和操作触发

ember-cli - 全局配置 ember-cli 以在新项目中使用 yarn

ember.js - Ember-Cli 将记录保存到 http-mock 服务器

javascript - Jquery验证: if input has specific value : error

javascript - 如何创建一组下拉列表,其中列表会随着您的选择而减少?

unit-testing - 单元测试获取数据的 Ember 服务

javascript - 在 Ember.js 中与 iframe 通信