emberjs: как вызвать пользовательское событие в представлении

Я хотел бы превратить примитивное событие (щелчок) в семантическое событие, например "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, но не функция deleteTodo из IndexRoute. Любые предложения, что может пойти не так?

Ваше здоровье

1 ответ

Вы можете использовать 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/

Я бы обычно делал удаление записи в контроллере. Похоже, поместить это в событие маршрутизатора не было бы идеальным.

Другие вопросы по тегам