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が、ルート内で定義します。あなたはそれをに移動する必要があります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 に答える