mirror of https://github.com/ElemeFE/element
				
				
				
			Merge pull request #1016 from furybean/table-row-key
Table: render rows with row-key.pull/1008/head
						commit
						bcbee7b472
					
				| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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);
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue