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 回答