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") ;
}
}
});