我的Ember控制器的属性正在逐渐得到回应

时间:2013-07-10 18:00:22

标签: properties controller ember.js literals

我和Ember.js合作过了一段时间。现在我得到了一个我无法解决的怪异行为。这不是我第一次体验它,但在以前的场合我在做了一些改变后想出来了。但现在,我真的不知道是什么导致了冲突。问题出现在控制器中。我有这个非常简单的控制器,只是为了测试:

App.AppColleaguesController = Ember.ArrayController.extend
(
  {
    needs: ['app'],

    aNumber: function()
    {
      return this.get('controllers.app.personId');
    }
  }
);

当然,该属性是在AppController上定义的:

App.AppController = Ember.ArrayController.extend
(
  {
    loggedIn: false,
    personId: -1,
    personName: '',
    location: '',

    logOut: function()
    {
      if (window.confirm("Do you want log out?"))
      {
        this.set('loggedIn', false);
        this.set('personId', -1);
        this.set('personName', '');
        this.set('location', '');
        this.send('goToLogin');
      }
    }
  }
);

在我的模板中,我得到了这个结果:

  

...这是一个数字: function(){return   this.get( 'controllers.app.personId'); } ...

我的模板就像这样简单:

...
This is a number: *{{aNumber}}*

{{debug}}
{{log aNumber}}
...

我的模板中的调试语句在Firebug控制台中向我显示:

...
Transitioned into 'app.colleagues'
function()
...

所以,就像函数是字面上的回声,而不是“解释”。事实上,我在几个控制器中遇到了这种问题,但其余的(它们很多,比如8或10个控制器)工作得很好。你对这个问题有什么看法吗?是我的错误,还是Ember问题?

提前多多感谢!我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

你在功能之后忘记了.property。 Ember需要这表明函数是计算属性。

aNumber: function() {
  return this.get('controllers.app.personId');
}.property('app.personId')