Ember.js 在组件内部传递组件中的操作的最佳实践

Ember.js 在组件内部传递组件中的操作的最佳实践,ember.js,Ember.js,我正在组件内部传递组件中的操作。 一般来说,我使用的是这样的方法 home.hbs: {{layerOne action1="action1" action2="action2" action3="action3" action4="action4" }} home.js actions:{ action1: function () { //do something }, action2: function () { //do so

我正在组件内部传递组件中的操作。 一般来说,我使用的是这样的方法

home.hbs:

{{layerOne action1="action1" action2="action2" action3="action3" action4="action4" }}
home.js

actions:{
    action1: function () {     
      //do something
    },
    action2: function () {  
      //do something    
    },
    action3: function () {   
      //do something   
    },
    action4: function () {  
      //do something   
    }
}
莱耶隆商学院

{{layerTwo action1="action1" action2="action2" action3="action3" action4="action4" }}
layerOne.js

actions:{
    action1: function () {   
      this.sendAction('action1');   
    },
    action2: function () {      
      this.sendAction('action2');   
    },
    action3: function () {   
      this.sendAction('action3');      
    },
    action4: function () {    
      this.sendAction('action4');     
    }
}
layerTwo.hbs

{{#paper-button onClick=(action "action1")}}Action 1{{/paper-button}}
{{#paper-button onClick=(action "action2")}}Action 2{{/paper-button}}
{{#paper-button onClick=(action "action3")}}Action 3{{/paper-button}}
{{#paper-button onClick=(action "action4")}}Action 4{{/paper-button}}
layerTwo.js

actions:{
    action1: function () {   
      this.sendAction('action1');   
    },
    action2: function () {      
      this.sendAction('action2');   
    },
    action3: function () {   
      this.sendAction('action3');      
    },
    action4: function () {    
      this.sendAction('action4');     
    }
}
如果我添加更多操作,我每次都必须逐个配置层的js文件和hbs文件。哈佛商学院也会很长。例如,
{{layerOne action1=“action1”action2=“action2”action3=“action3”action4=“action4”等}

对于这种情况有什么最佳做法吗?谢谢。

您可以使用闭包动作将动作处理程序从上层传递到下层

余烬中有两种不同的动作传递机制:

  • 事件传递,如
    {{layerWO action1=“action1”
    (需要在每个组件中调用
    sendActions
  • 关闭操作,例如
    {{layerTwo action1=(操作“action1”)
    (只需要将操作处理程序传递到底部。)
  • 演示如何使用闭包操作。您可以看到js文件中没有任何内容

    如果使用带引号的闭包操作,如
    (操作“action1”)
    ,则将搜索
    操作
    哈希中的函数并将其传递给底部组件

    如果使用不带引号的闭包操作,例如
    (操作action1)
    ,则该组件的函数将传递给底部组件。(该函数需要在该组件中定义或传递给该组件。)

    理解闭包动作。

    您可以使用闭包动作将动作处理程序从上层传递到下层

    余烬中有两种不同的动作传递机制:

  • 事件传递,如
    {{layerWO action1=“action1”
    (需要在每个组件中调用
    sendActions
  • 关闭操作,例如
    {{layerTwo action1=(操作“action1”)
    (只需要将操作处理程序传递到底部。)
  • 演示如何使用闭包操作。您可以看到js文件中没有任何内容

    如果使用带引号的闭包操作,如
    (操作“action1”)
    ,则将搜索
    操作
    哈希中的函数并将其传递给底部组件

    如果使用不带引号的闭包操作,例如
    (操作action1)
    ,则该组件的函数将传递给底部组件。(该函数需要在该组件中定义或传递给该组件。)


    了解闭包动作。

    在我的示例中如何从主页->layerOne->layerTwo传递动作?只要在所有onClick中使用闭包动作?是的,如果不需要修改,只需传递。正如twiddle所示。在我的示例中如何从主页->layerOne->layerTwo传递动作?只要在所有onClick中使用闭包动作?是的,如果需要的话不需要修改它,只需通过即可。正如twiddle所示。