EmberJs: пользовательское событие не получено в маршрутизаторе

Возможный дубликат:
emberjs: как вызвать пользовательское событие в представлении

Я создал jsfiddle, чтобы продемонстрировать проблему. Когда вы щелкнете в представлении (по тексту), в консоли вы увидите, что представление получает щелчок. Но когда я создаю пользовательское событие и запускаю его, оно не получено в маршрутизаторе:

App.IndexView = Em.View.extend({
    click: function(e) {
        console.log("CLICK");
        this.get("controller").send("doStuff");
}
});

App.IndexRoute = Em.Route.extend({
    ....
    doStuff: function(e) {
       alert("Do stuff") ;    
    }
}); 

Вот полный рабочий пример тоже http://jsfiddle.net/jeanluca/9Xasr/6/

Какие-либо предложения?

ура

1 ответ

Решение

Ты звонишь doStuff() контроллера для App.IndexView, но вы определяете doStuff внутри маршрута. Вы должны переместить его в App.IndexController:

App.IndexController = Em.Controller.extend({
    doStuff: function(e) {
       alert("Do stuff") ;    
    }
});

Скрипка: http://jsfiddle.net/8k4PE/

С другой стороны, если вы хотите, чтобы маршрут получил событие:

<script type="text/x-handlebars" data-template-name="navigation">
    <span {{action "doStuff}}>Sidebar</span>
</script>

App.IndexRoute = Em.Route.extend({
    //...
    events: {
      doStuff: function(e) {
         alert("Do stuff") ;    
      }
    }
}); 
Другие вопросы по тегам