2

我遇到了这种情况,我需要从 dom-repeat 中调用一个方法。下面是我的代码

<template is='dom-repeat' items="[[_dataArray]]" as="rowItem">
     <template is='dom-repeat' items="[[_objectArray]]" as="columnItem">
         <template>
             <span>[[_getColumnItemValue(rowItem, columnItem)]]</span>
         </template>
     </template>
</template>

在我的_getColumnItemValue方法中,我想使用属性指定的键获取对象的值columnData

喜欢rowData[columnData]

_getColumnItemValue: function(rowData, columnData) {
    return rowData[columnData];
}

我的问题是_getColumnItemValue没有调用该方法。有没有更好的方法来做到这一点?

4

2 回答 2

0

最后我能够让这件事发挥作用。不完全是在这种情况下,而是在另一个项目中,具有完全相同的逻辑。唯一的变化是我的 _objectArray 不是字符串数组,而是对象数组。所以代码将如下所示:

<template is="dom-repeat" items="{{tableData}}" as="rowData"> <tr> <template is="dom-repeat" items="{{headers}}" as="columnData"> <td> <template is="dom-if" if="{{checkType(columnData, 'check')}}"> <paper-checkbox disabled="{{getAttributeValue(columnData, 'disabled')}}" checked="{{getRowData(rowData, columnData)}}" on-change="checkBoxSelected"></paper-checkbox> </template> <template is="dom-if" if="{{checkType(columnData, 'led')}}"> <led-indicator on="{{!getRowData(rowData, columnData)}}"></led-indicator> <span style="display: none;">{{getRowData(rowData, columnData)}}</span> </template> <template is="dom-if" if="{{checkType(columnData, 'link')}}"> <a href="javascript:void(0)" on-click="tableRowClicked">{{getRowData(rowData, columnData)}}</a> </template> <template is="dom-if" if="{{checkType(columnData, 'text')}}"> <span>{{getRowData(rowData, columnData)}}</span> </template> </td> </template> </tr> </template>

看方法getRowData

getRowData: function (row, column) { return row[column.key]; },

checkType: function (columnData, type) { var isType = false; isType = columnData.type.toLowerCase() == type.toLowerCase(); return isType; },

这是一个表格,它可以动态添加或删除行和列,并显示不同类型的元素,如文本、链接、复选框我的一些自定义控件,如 led-indicator 等。

背后的逻辑是,headers 数组将用于生成表列,该数组包含结构对象

{ name: 'Popular Name', key: 'PopularName', type: 'text' }

表数据包含对象数组,其中包含标题数组中指定的键。希望这可能对某些人有用。

于 2016-12-19T07:16:39.737 回答
0

<template>如果您的代码与您粘贴的完全一样,那么您的标签太多了。

<template is='dom-repeat'>
  <template is='dom-repeat'>
     <span></span>
  </template>
</template>

必须删除最里面的模板。您正在渲染它而不是<span>.

于 2016-10-15T14:40:59.837 回答