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

Calling controller action from Ember 2.0 component

本文关键字:控制器 调用 组件 Ember      更新时间:2023-09-26

现在烬2.0决定删除烬。我有从视图传递动作到控制器的问题。

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

因为不是烬。视图我现在需要使用Ember.Component。当然还有this。get(controller)发送方法不再工作。有什么解决办法吗?

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

// some-component.js 
this.sendAction('actionName', params);
// template
{{some-component actionName="foobar"}}
// controller
actions: {
   foobar(params) {
     alert('action received');
   }
}

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