你好,我有一个 ember 应用程序,它有一个 handlebars if else 语句,它总是显示 if 部分而不是 else
我已经阅读了 ember 文档中的所有内容 here和 here 并在网上搜索了无数次:(
我的 Controller 和模板的代码出现在下面我认为问题可能与我的 session 初始化程序有关,我的 Controller 引用没有在我的 Controller 之前加载?
我已阅读 here和 here和许多其他我忘记的地方:(试图学习如何在我的 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/