我对Ember有了一个基本的感觉,现在遇到了一些奇怪的问题。这个应用程序非常简单(而且很难看)。在一个特定的路径(/stack)上,我列出了属于这个堆栈的一堆卡片。StackController
是一个数组控制器,因为它从本质上检索属于它的一堆卡片
StackController = Ember.ArrayController.extend();
和
StackRoute = Ember.Route.extend({
model: function(){
return App.Card.find();
}
});
然后在我的模板中,我使用#each helper简单地循环它,以显示卡片的属性('front'),如下所示:
<ul>
{{#each}}
<li>{{front}}</li> <button {{action 'backside' this}}>View</button>
{{/each}}
</ul>
到目前为止,一切都正常工作。但是,当我单击“View”按钮触发“backside”事件时,它会产生一个:
“Nothing handled the event 'backside'“错误。有点失望,因为它应该这样做似乎很基本,哦,是的,我确实在我的控制器中显式指定了'backside'事件,如下所示:
StackController = Ember.ArrayController.extend({
actions:{
backside:function(){
alert("backside event handled");
}
}
});
要查看更详细的内容,请参阅jsBin:
http://jsbin.com/AHiTicU/5/edit
我做错了什么?
- JSBIN中的代码是准确的,但是这里可能有一些错别字(不太可能,但请注意)。*
1条答案
按热度按时间8xiog9wr1#
您使用的是
ember-1.0.0-rc.6
,在该版本中,您需要使用action将action处理程序放在route内部,放在一个具有名为events
的键的对象中,如下所示:更新了jsbin http://jsbin.com/AHiTicU/6/edit
我推荐你使用最新的版本,目前
1.2.0
,你可以在emberjs网站http://emberjs.com/的主页上获得。因此,您当前的代码将以http://jsbin.com/AHiTicU/9/edit的方式工作