指南说当一个动作被触发时,Ember 首先在当前控制器中寻找一个处理程序,然后如果它在控制器中找不到它,它会在当前路由中查找,然后是父路由,等等。我不是看到这种情况发生。
我的路线:
App.Router.map(function() {
// Creates 'products' and 'products.index' routes
this.resource('products', function(){
// ...
});
});
我的超级琐碎products.index模板;
<span {{action fooBar}}>Run fooBar</span>
为了测试这一点,我目前在浏览器中的 /#/products 中,并且 Ember 记录“已转换为 'products.index'”说我目前在 products.index 路线中,正如我所期望的那样。现在,如果单击该操作,Ember 应该在以下位置查找处理程序:
- 产品索引控制器
- 产品索引路线
- 产品路线
我的观察:
- 如果我将处理程序放在 ProductsIndexController 中,它就可以工作。
- 如果我将处理程序放在 ProductsIndexRoute 中,它就可以工作。
- 但是,如果我将处理程序放在 ProductsRoute 中,它永远不会被调用:
.
App.ProductsRoute = Ember.Route.extend({
events: {
fooBar: function(){
alert("alarm!");
}
}
});
相反,我看到了错误:
*Error: Nothing handled the event 'fooBar'.*
我错过了什么?