1

嗨,我正在尝试将子组件中的操作发送回父组件,以便它可以访问 this.store 并执行数据库操作。基本布局是这样的:

app/templates/item/index.hbs -> 使用组件循环项目

            {{#each model as |item|}}
                {{item-listing item=item}}
            {{/each}}

应用程序/模板/组件/item-listing.hbs

<li><a {{action 'copyItem' item}}>Copy</a></li>

在 app/components/item-listing.js 中,我必须定义一个动作,否则我得到一个动作未定义错误。从这里 this.store 是未定义的,所以我试图让动作冒泡。

actions: {
    copyItem: function(item) {
        this.sendAction('copyItem', item);
    },

从这里我迷路了。我已经尝试对以下所有内容采取行动:

/app/routes/item/index.js /app/routes/item.js

但它似乎永远无法通过 sendAction 调用。我究竟做错了什么?

4

1 回答 1

2

你必须:

  1. 在您的控制器 (ItemIndexController) 中定义该操作 ( copyItem)。
  2. 在模板循环中传递该操作:

第一种方式:

{{#each model as |item|}}
    {{item-listing item=item copyItem='copyItem'}}
{{/each}}

第二种方式:

{{#each model as |item|}}
    {{item-listing item=item copyItem=(action 'copyItem')}}
{{/each}}
于 2016-02-07T17:07:52.773 回答