2

ガイドによると、アクションがトリガーされると、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 は次の場所でハンドラーを探す必要があります。

  1. 製品索引コントローラー
  2. 製品索引ルート
  3. 製品ルート

私の観察:

  • ハンドラーを ProductsIndexController に配置すると、機能します。
  • ハンドラーを ProductsIndexRoute に配置すると、機能します。
  • ただし、ハンドラーを ProductsRou​​te に配置すると、呼び出されることはありません。

.

App.ProductsRoute = Ember.Route.extend({
    events: {
        fooBar: function(){
            alert("alarm!");
        }
    }
});

代わりに、次のエラーが表示されます。

*Error: Nothing handled the event 'fooBar'.*

私は何が欠けていますか?

4

1 に答える 1

1

私の他のjavascriptファイルの1つは、App.ProductsRou​​teを設定/作成していました(そしてそれに対して何もしていませんでした)が、競合を引き起こしていました。愚かな間違い。

于 2013-03-11T18:21:31.120 に答える