在 ember 控制器中获取 table 属性或 属性 值

Get table attribute or property value within ember controller

我有一个 ember 应用程序,它在页面中有一个 table 和一个网格组件。我启用了拖放功能,该功能从 table 的特定单元格中拖出一个值并将其放入网格的空 space 中。由于 table 有多个列,我想获取索引位置或者我想知道正在拖动哪一列的单元格。我想要控制器中列的索引值。

假设 table 有 3 行 3 列。对于被拖动的第一列中的所有元素,我想将第二列和第三列的索引值类似地设置为 1。

这是我的 table

的 .hbs 代码
<table class = "table table-bordered">
        <thead>
            <tr>
                <th colspan="6">Inbound Units</th>
            </tr>
        </thead>
        <tbody>
          {{#each currentbid as |currentbid|}}
               <tr>
                {{#each pull as |pull|}}
                      {{#if (eq pull.DRIVERNAME currentbid.DRIVERNAME)}}
                        <td abbr="P1">{{#draggable-object content=pull position=1 dragEndAction='dragEndAction'}}{{#draggable-object-target action="draganddrop"}}{{pull.P1}}{{/draggable-object-target}}{{/draggable-object}}</td>
                        <td>{{pull.P2}}</td>
                        <td>{{pull.P3}}</td>
                        <td>{{pull.P4}}</td>
                      {{/if}}
                      {{/each}}
                            </tr>
            {{/each}}
        </tbody>
    </table>

正如您在 table td 标签中看到的那样,我已经指定了缩写属性。但我不知道如何在控制器中获取 abbr 的值。任何其他方式也可以。

谢谢!

此答案适用于 Ember 2.x.x 并且写于 2.15。

默认情况下,通过闭包分配给特定事件的操作,如 ondragEnd={{action "someAction"}} 接收事件目标作为参数:

actions: {
  someAction(event) {
    console.log(event.target)
  }
}

或许,您可以在您的组件中使用 event.target.parentElement.className 来获取 class 名称,然后将操作和参数发送到您的控制器。希望该选择器 return 成为新的父级而不是旧的。

您可以在 Ember Guides 中阅读有关捕获浏览器事件的不同方法。