1

私は Ember.js を使い始めたばかりですが、次のように、イベントがビュー内にバインドされている理由をまだ理解していません。

App.ClickableView = Ember.View.extend({
  click: function(evt) {
     alert("ClickableView was clicked!");
  }
});

JavaScriptMVC と Sencha Touch では、このようなことはコントローラーで処理されます。たとえば、複数のコントローラーを同じイベントにバインドするにはどうすればよいでしょうか?

4

1 に答える 1

0

イベントのデフォルトコンテキストは、最新バージョンのemberのビューからルーター(コントローラー)に変更されました。イベントは、次のように現在のルーター(状態)によって処理されます。

root : Ember.Route.extend({
    index : Ember.Route.extend({
        route : '/',
        connectOutlets : function(router) {
            var ac = router.get('applicationController');
            ac.connectOutlet({
                name : 'topnav',
                outletName : 'topnav'
            });
        },
        click: function(event, context) {
           alert("ClickableView was clicked!");
        }
})

他の州で他のクリックイベントが発生した場合、アプリはどの州/ルートにあるかを知っているため、混乱することはありません。

ビューまたはコントローラーでイベントを処理できますが、ルーターで処理することをお勧めします。

于 2012-12-22T01:49:45.343 に答える