我的控制器上有一个属性isLogin
,绑定到有条件的把手{{#unless isLogin}}
。但是在渲染模板时似乎没有激活该功能。我插入了一个console.log
语句,但也没有显示在控制台中。
我有一个这样的应用程序模板:
<div id="header">
<div class="screen-line black"></div>
</div>
<div id="content">
<div class="pure-g">
<div class="pure-u-1-6">
{{#unless isLogin}}
<div class="nav pure-menu custom-restricted-width">
<ul class="pure-menu-list">
<li class="pure-menu-item"><div class="menu-item-icon fa fa-trello"></div>{{link-to "Classrooms" "classrooms" class="menu-item pure-menu-link"}}</li>
</ul>
</div>
{{/unless}}
</div>
<div class="pure-u-5-6" >
{{outlet}}
</div>
</div>
</div>
<div id="footer">
<div class="screen-line black"></div>
</div>
这样的控制器:
import Ember from 'ember';
export default Ember.Controller.extend({
isLogin : function(){
console.log("isLogin called");
return true;
}
});
你能看出出了什么问题吗?感谢
答案 0 :(得分:1)
也许你应该将isLogin
变成属性,如下所示:
// controllers/application.js
import Ember from 'ember';
export default Ember.Controller.extend({
isLogin: function(){
console.log("isLogin called");
return true;
}.property()
});
(见jsbin)
答案 1 :(得分:0)
我认为你的实施方式是错误的。
您应该以下面的方式执行 - isLogin应该是控制器中的变量,您可以在任何控制器函数(如init())中更改此变量的值。如下 -
export default Ember.Controller.extend({
isLogin: false,
init:function()
{
this._super();
this.set('isLogin',true);
}
});
然后您可以在模板中使用此变量。 [只是注意 - 我只在init方法中调用this.super(),因为我不想覆盖控制器init的任何原始功能。]