2

可能重复:
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/

有什么建议么 ?

干杯

4

1 回答 1

3

您正在调用doStuff()App.IndexView 的控制器,但您doStuff在 Route 内部定义。你应该把它移到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") ;    
      }
    }
}); 
于 2013-02-03T21:49:17.457 回答