javascript - Ember 将操作添加到模板以进行父/子通信

标签 javascript jquery ember.js handlebars.js

我正在尝试为我的 Ember 组件定义自定义操作并希望在父/子之间进行通信。

在 my-child.js 中,我有

actions: {
    someCustomAction: function() {
        let self = this;
        self.sendAction('someCustomAction');
    },
}

我在 my-parent.js 中发现了同样的情况,如下所示;

actions: {
    someCustomAction: function (){
        console.log("Inside someCustomAction...."); 
    }       
}

现在,使用上面的代码,控制/操作不会到达 my-parent.js

我必须将“someCustomAction”添加到模板中,如下所示

在 my-parent.hbs 中

{{my-child someCustomAction="someCustomAction"}}

我想知道确切的原因。为什么只执行 sendAction 不能自动工作?

最佳答案

以下是我在遵循数据向下、操作向上 (DDAU) 模式时的做法。

首先,您使用 action helper 传递您想要在 child 中触发的操作。

{{my-child someActionName=(action 'parentAction')}}

然后,您检索该操作并从子组件中触发它。

this.get('someActionName')(params);

Ember Twiddle Complete Example

关于javascript - Ember 将操作添加到模板以进行父/子通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46115725/

相关文章:

javascript - Meteor忘记密码实现

javascript - 在 JavaScript 中循环遍历 json 数据

ember.js - Ember-data RecordArray isLoaded 状态

javascript - 在 Three.js 继承模式中对原型(prototype)使用扩展有什么好处?

javascript - 获取表中带有复选框的行

javascript - Node 模块提供 getter 和 setter

javascript - 如何将 .val()[0] 用于 2 位数字?

javascript - Ember.js 1.5.1 绑定(bind)属性禁用到按钮

javascript - emberjs 中查询参数允许的值

javascript - 按 "enter"键时的 IE7 不会阻止默认操作