从Ember 2.0组件调用控制器操作

Mak*_*zik 2 javascript ember.js

现在,Ember 2.0决定彻底删除Ember.View,我遇到了从视图到控制器的操作传递问题.

App.SomeView = Ember.Component.extend({
   didInsertElement : function(){
     var _this = this;
     window.addEventListener("message",
        function(event) {
            _this.get("controller").send("foobar", event.data);
        }, false);
  }
});

App.SomeController = Ember.Controller.extend({
   actions: {
      foobar: function(param) {
         console.log("Yey", param);
      }
   }
});
Run Code Online (Sandbox Code Playgroud)

因为而不是Ember.View我现在需要使用Ember.Component.当然然后this.get("controller").send方法不再起作用了.这有什么办法吗?

art*_*ych 9

您可以sendAction()在组件中使用并在模板中为其分配处理程序.

// some-component.js 
this.sendAction('actionName', params);

// template
{{some-component actionName="foobar"}}

// controller
actions: {
   foobar(params) {
     alert('action received');
   }
}
Run Code Online (Sandbox Code Playgroud)

详细信息:http://guides.emberjs.com/v2.0.0/components/sending-actions-from-components-to-your-application/