ガイドによると、アクションがトリガーされると、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'.*
私は何が欠けていますか?