【问题标题】:Calling controller action from Ember 2.0 component从 Ember 2.0 组件调用控制器操作
【发布时间】:2015-09-23 13:35:20
【问题描述】:

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

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

【问题讨论】:

    标签: javascript ember.js


    【解决方案1】:

    您可以在组件中使用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/

    【讨论】:

    • 是的,补充一点,这从 1.x 早期就已经存在,所以这是一种常见的模式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2013-09-26
    • 1970-01-01
    相关资源
    最近更新 更多