0

「deleteTodo」のように、プリミティブ イベント (クリック) をセマンティック イベントに変換したいと思います

App.TodoView = Em.View.extend({
    click: function(e) {
        this.trigger("deleteTodo");
    }
});

App.Router.map(function(match) {
    match('/').to('index');
});

App.IndexRoute = Ember.Route.extend({
    deleteTodo: function(e) {
        // this code is never executed :(
    }
}) ;

「クリック」を実行した後、TodoView クリック関数が呼び出されていることがわかりますが、IndexRoute からの deleteTodo 関数は呼び出されていません。ここで何がうまくいかないのでしょうか?

乾杯

4

1 に答える 1

5

this.get( "controller")。send( "deleteTodo")を使用できます。これにより、コントローラーにメッセージが送信されます。コントローラーがdeleteTodoを処理しない場合、ルーターにバブルされ、そこで処理されます。

click: function(e) {
    this.get('controller').send("deleteTodo");
}

ルーターでは、イベントを定義する必要もあります。

events: {
  doStuff: function(e) {
    alert("Do stuff") ;    
  }
}

http://jsfiddle.net/9Xasr/7/

私は通常、コントローラーでレコードの削除を行います。それをルーターイベントに入れるのは理想的ではないようです。

于 2013-01-31T20:40:18.457 に答える