把手似乎没有调用我的控制器功能

时间:2015-04-17 17:46:57

标签: javascript templates ember.js handlebars.js

我的控制器上有一个属性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;
  }

});

你能看出出了什么问题吗?感谢

2 个答案:

答案 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的任何原始功能。]