可能的重复项:
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/
有什么建议吗?
干杯
您正在为 App.IndexView 调用控制器doStuff()
,但在路由中定义了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") ;
}
}
});