我和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问题?
提前多多感谢!我希望你能帮助我。
答案 0 :(得分:2)
你在功能之后忘记了.property
。 Ember需要这表明函数是计算属性。
aNumber: function() {
return this.get('controllers.app.personId');
}.property('app.personId')