Эх сурвалжийг харах

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

Table: render rows with row-key.
杨奕 8 жил өмнө
parent
commit
bcbee7b472

+ 10 - 1
packages/table/src/table-body.js

@@ -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 - 10
packages/table/src/table-store.js

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

+ 9 - 0
packages/table/src/util.js

@@ -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);
+  }
+};