Handlebars 似乎没有调用我的控制器功能
Handlebars doesn't seem to call my controller function
我的控制器上有一个 属性,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;
}
});
你能看出哪里出了问题吗?谢谢
我认为你的实现方式是错误的。
您应该按以下方式进行 - isLogin 应该是控制器中的一个变量,您可以在任何控制器函数(如 init())中更改此变量的值。如下 -
export default Ember.Controller.extend({
isLogin: false,
init:function()
{
this._super();
this.set('isLogin',true);
}
});
然后您可以在模板中的 Unless 中使用此变量。
[请注意 - 我在 init 方法中调用 this.super() 只是因为我不想覆盖控制器 init 的任何原始功能。]
也许你应该将 isLogin
变成 属性,如下所示:
// controllers/application.js
import Ember from 'ember';
export default Ember.Controller.extend({
isLogin: function(){
console.log("isLogin called");
return true;
}.property()
});
(参见 jsbin)
我的控制器上有一个 属性,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;
}
});
你能看出哪里出了问题吗?谢谢
我认为你的实现方式是错误的。
您应该按以下方式进行 - isLogin 应该是控制器中的一个变量,您可以在任何控制器函数(如 init())中更改此变量的值。如下 -
export default Ember.Controller.extend({
isLogin: false,
init:function()
{
this._super();
this.set('isLogin',true);
}
});
然后您可以在模板中的 Unless 中使用此变量。 [请注意 - 我在 init 方法中调用 this.super() 只是因为我不想覆盖控制器 init 的任何原始功能。]
也许你应该将 isLogin
变成 属性,如下所示:
// controllers/application.js
import Ember from 'ember';
export default Ember.Controller.extend({
isLogin: function(){
console.log("isLogin called");
return true;
}.property()
});
(参见 jsbin)