Merge pull request #1016 from furybean/table-row-key

Table: render rows with row-key.
pull/1008/head
杨奕 2016-11-13 11:49:09 +08:00 committed by GitHub
commit bcbee7b472
3 changed files with 20 additions and 11 deletions

View File

@ -1,4 +1,4 @@
import { getValueByPath, getCell, getColumnByCell } from './util';
import { getValueByPath, getCell, getColumnByCell, getRowIdentity } from './util';
export default {
props: {
@ -31,6 +31,7 @@ export default {
{
this._l(this.data, (row, $index) =>
<tr
key={ this.$parent.rowKey ? this.getKeyOfRow(row, $index) : $index }
on-click={ ($event) => this.handleClick($event, row) }
on-mouseenter={ _ => this.handleMouseEnter($index) }
on-mouseleave={ _ => this.handleMouseLeave() }
@ -118,6 +119,14 @@ export default {
},
methods: {
getKeyOfRow(row, index) {
const rowKey = this.$parent.rowKey;
if (rowKey) {
return getRowIdentity(row, rowKey);
}
return index;
},
isCellHidden(index) {
if (this.fixed === true || this.fixed === 'left') {
return index >= this.leftFixedCount;

View File

@ -1,15 +1,6 @@
import Vue from 'vue';
import debounce from 'throttle-debounce/debounce';
import { orderBy, getColumnById } from './util';
const getRowIdentity = (row, rowKey) => {
if (!row) throw new Error('row is required when get row identity');
if (typeof rowKey === 'string') {
return row[rowKey];
} else if (typeof rowKey === 'function') {
return rowKey.call(null, row);
}
};
import { orderBy, getColumnById, getRowIdentity } from './util';
const sortData = (data, states) => {
const sortingColumn = states.sortingColumn;

View File

@ -106,3 +106,12 @@ export const mousewheel = function(element, callback) {
element.addEventListener(isFirefox ? 'DOMMouseScroll' : 'mousewheel', callback);
}
};
export const getRowIdentity = (row, rowKey) => {
if (!row) throw new Error('row is required when get row identity');
if (typeof rowKey === 'string') {
return row[rowKey];
} else if (typeof rowKey === 'function') {
return rowKey.call(null, row);
}
};