我使用 Ember.js 已经有一段时间了。现在我出现了一种无法修复的奇怪行为。我不是第一次遇到这种情况,但在以前的情况下,我做了一些小小的改变就想通了。但现在,我真的不知道到底是什么原因造成了冲突。该问题发生在 Controller 中。我有这个极其简单的 Controller ,仅用于测试:
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');
}
}
}
);
在我的模板中,我得到以下结果:
... This is a number: function () { return this.get('controllers.app.personId'); } ...
我的模板就像这样简单:
...
This is a number: *{{aNumber}}*
{{debug}}
{{log aNumber}}
...
我的模板中的调试语句在 Firebug 控制台中向我显示了这一点:
...
Transitioned into 'app.colleagues'
function()
...
所以,这个函数就像是字面上的回显,而不是“解释”。事实上,我在更多 Controller 中遇到了此类问题,但其余 Controller (数量很多,例如 8 或 10 个 Controller )运行良好。您对这个问题有什么想法吗?是我的错误,还是 Ember 的问题?
提前非常感谢!我希望你能帮助我。
最佳答案
您忘记了函数后面的.property
。 Ember 需要它来表明函数是计算属性。
aNumber: function() {
return this.get('controllers.app.personId');
}.property('app.personId')
关于properties - 我的 Ember Controller 的属性确实得到了回显,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17577702/