获取ember控制器中的表属性或属性值

时间:2017-09-21 19:59:11

标签: javascript jquery html ember.js

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

假设一个表有3行,每列3列。对于被拖动的第一列中的所有元素,我希望第二列和第三列的索引值类似于1.

这是我的表的

<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>

正如你可以看到表td标签,我已经指定了abbr属性。但我不知道如何在控制器中获得abbr的值。任何其他方式来获得这个也没关系。

谢谢!

1 个答案:

答案 0 :(得分:0)

此答案适用于Ember 2.x.x,编号为2.15。

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

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

可能,您可以在组件中使用event.target.parentElement.className来获取类名,然后将操作和参数发送到控制器。希望选择器将返回新的父级而不是旧的父级。

您可以在Ember Guides中了解捕捉浏览器事件的不同方法。