2

我一直在使用 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 问题?

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

4

1 回答 1

2

您忘记了.propertyafter 函数。Ember 需要它来指示函数是计算属性。

aNumber: function() {
  return this.get('controllers.app.personId');
}.property('app.personId')
于 2013-07-11T04:17:47.563 回答