繁体   English   中英

Ember.js(v2.4.5)组件没有传递第二个动作

[英]Ember.js (v2.4.5) component isn't passing up second action

我有一个非常简单的组件,它有两个动作,即开始和停止。 单击按钮时将触发它们。 第一个动作冒泡到路线并按预期工作,但是第二个动作在组件中触发,但从未到达路线。

我刚刚开始玩Ember,但是我想组件可以执行多个动作?

控制台中没有错误,按钮只是不执行任何操作,并且从路由中不会显示控制台日志。

组件动作

actions: {

  start() {
    console.log('component start called');
    this.sendAction('start', this.get('item'));
  },

  stop() {
    console.log('component stop called');
    this.sendAction('stop', this.get('item'));
  }
}

路线动作

actions: {
    start (server) {
        console.log('route start called');
        server.set("settings.amazonTask", 'start');
        server.save();
    },

    stop (server) {
        console.log('route stop called');
        server.set('settings.amazonTask', 'stop');
        server.save();
    }
}

模板

<button type="button"
        class="btn btn-default btn-sm" {{action "start"}}>
    Turn on
</button>


<button type="button"
        class="btn btn-default btn-sm" {{action "stop"}}>
    Turn off
</button>

您必须将操作归结为组件:

{{my-component start=(action 'start') stop=(action 'stop')}}

然后,您可以使用sendAction进行调用。

但是我强烈建议使用新语法并直接访问attrs对象上的操作。 这更加清楚,可以清楚地了解发生了什么:

this.attrs['start'](this.get('item'))

实际上, action助手只是从actions对象中获取一个动作并将其绑定到当前上下文。 可以将结果传递给组件,然后在执行action帮助器的上下文中从该组件调用该结果。

请注意,在已创建的动作上调用action助手将不会反弹动作,而只是通过它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM