vue使用elementUI實現el-table行點擊事件觸發展開事件

方法一:
使用

row-key="id"
:expand-row-keys="expands"
@row-click="rowClick"

以下代碼可直接複製粘貼看效果

<template>
     <el-table
    :data="tableData5"
    style="width: 100%"
    row-key="id"
    :expand-row-keys="expands"
    @row-click="rowClick"
  >
    <el-table-column type="expand">
      <template slot-scope="props">
        <el-form label-position="left" inline class="demo-table-expand">
          <el-form-item label="商品名稱">
            <span>{{ props.row.name }}</span>
          </el-form-item>
          <el-form-item label="所屬店鋪">
            <span>{{ props.row.shop }}</span>
          </el-form-item>
          <el-form-item label="商品 ID">
            <span>{{ props.row.id }}</span>
          </el-form-item>
          <el-form-item label="店鋪 ID">
            <span>{{ props.row.shopId }}</span>
          </el-form-item>
          <el-form-item label="商品分類">
            <span>{{ props.row.category }}</span>
          </el-form-item>
          <el-form-item label="店鋪地址">
            <span>{{ props.row.address }}</span>
          </el-form-item>
          <el-form-item label="商品描述">
            <span>{{ props.row.desc }}</span>
          </el-form-item>
        </el-form>
      </template>
    </el-table-column>
    <el-table-column
      label="商品 ID"
      prop="id"
    >
    </el-table-column>
    <el-table-column
      label="商品名稱"
      prop="name"
    >
    </el-table-column>
    <el-table-column
      label="描述"
      prop="desc"
    >
    </el-table-column>
  </el-table>
</template>
 
<style>
  .demo-table-expand {
    font-size: 0;
  }
  .demo-table-expand label {
    width: 90px;
    color: #99a9bf;
  }
  .demo-table-expand .el-form-item {
    margin-right: 0;
    margin-bottom: 0;
    width: 50%;
  }
</style>
 
<script>
export default {
  data() {
    return {
		tableData5: [{
	        id: '12987122',
	        name: '好滋好味雞蛋仔',
	        category: '江浙小喫、小喫零食',
	        desc: '荷蘭優質淡奶,奶香濃而不膩',
	        address: '上海市普陀區真北路',
	        shop: '王小虎夫妻店',
	        shopId: '10333'
	      }, {
	        id: '12987123',
	        name: '好滋好味雞蛋仔',
	        category: '江浙小喫、小喫零食',
	        desc: '荷蘭優質淡奶,奶香濃而不膩',
	        address: '上海市普陀區真北路',
	        shop: '王小虎夫妻店',
	        shopId: '10333'
	      }, {
	        id: '12987125',
	        name: '好滋好味雞蛋仔',
	        category: '江浙小喫、小喫零食',
	        desc: '荷蘭優質淡奶,奶香濃而不膩',
	        address: '上海市普陀區真北路',
	        shop: '王小虎夫妻店',
	        shopId: '10333'
	      }, {
	        id: '12987126',
	        name: '好滋好味雞蛋仔',
	        category: '江浙小喫、小喫零食',
	        desc: '荷蘭優質淡奶,奶香濃而不膩',
	        address: '上海市普陀區真北路',
	        shop: '王小虎夫妻店',
	        shopId: '10333'
	    }],
      	// 要展開的行,數值的元素是row的key值
      	expands: []
            }
        },
        methods:{
         //在<table>裏,我們已經設置row的key值設置爲每行數據id:row-key="id"
            rowClick(row, event, column) {
            // 如果你使用的eslint的話  需要加上:
            /* eslint no-extend-native: ["error", { "exceptions": ["Array"] }] */
                Array.prototype.remove = function (val) {
                    let index = this.indexOf(val);
                    if (index > -1) {
                        this.splice(index, 1);
                    }
                };
                if (this.expands.indexOf(row.id) < 0) {
                    this.expands.push(row.id);
                } else {
                    this.expands.remove(row.id);
                }
            }
        }
    }
</script>

方案二:
使用

toggleRowExpansion(true,false)

以下代碼可直接複製粘貼看效果

<template>
  <el-table
    :data="tableData5"
  @row-click="clickTable"
   ref="refTable"
    style="width: 100%">
    <el-table-column type="expand">
      <template slot-scope="props">
        <el-form label-position="left" inline class="demo-table-expand">
          <el-form-item label="商品名稱">
            <span>{{ props.row.name }}</span>
          </el-form-item>
          <el-form-item label="所屬店鋪">
            <span>{{ props.row.shop }}</span>
          </el-form-item>
          <el-form-item label="商品 ID">
            <span>{{ props.row.id }}</span>
          </el-form-item>
          <el-form-item label="店鋪 ID">
            <span>{{ props.row.shopId }}</span>
          </el-form-item>
          <el-form-item label="商品分類">
            <span>{{ props.row.category }}</span>
          </el-form-item>
          <el-form-item label="店鋪地址">
            <span>{{ props.row.address }}</span>
          </el-form-item>
          <el-form-item label="商品描述">
            <span>{{ props.row.desc }}</span>
          </el-form-item>
        </el-form>
      </template>
    </el-table-column>
    <el-table-column
      label="商品 ID"
      prop="id">
    </el-table-column>
    <el-table-column
      label="商品名稱"
      prop="name">
    </el-table-column>
    <el-table-column
      label="描述"
      prop="desc">
    </el-table-column>
  </el-table>
</template>

<style>
  .demo-table-expand {
    font-size: 0;
  }
  .demo-table-expand label {
    width: 90px;
    color: #99a9bf;
  }
  .demo-table-expand .el-form-item {
    margin-right: 0;
    margin-bottom: 0;
    width: 50%;
  }
</style>

<script>
  export default {
    data() {
      return {
        tableData5: [{
          id: '12987122',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987123',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987125',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987126',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }]
      }
    },
     methods: {
         clickTable(row,index,e){
           this.$refs.refTable.toggleRowExpansion(row)
      }
  }
</script>

方案三:
使用

row-key="id" 
:expand-row-keys="expands"
@expand-change="expandChange"

以下代碼可直接複製粘貼看效果

<template>
  <el-table
    :data="tableData5"
    row-key="id"
    :expand-row-keys="expands"
    @expand-change="expandChange"
  @row-click="rowClick"
   ref="refTable"
    style="width: 100%">
    <el-table-column type="expand">
      <template slot-scope="props">
        <el-form label-position="left" inline class="demo-table-expand">
          <el-form-item label="商品名稱">
            <span>{{ props.row.name }}</span>
          </el-form-item>
          <el-form-item label="所屬店鋪">
            <span>{{ props.row.shop }}</span>
          </el-form-item>
          <el-form-item label="商品 ID">
            <span>{{ props.row.id }}</span>
          </el-form-item>
          <el-form-item label="店鋪 ID">
            <span>{{ props.row.shopId }}</span>
          </el-form-item>
          <el-form-item label="商品分類">
            <span>{{ props.row.category }}</span>
          </el-form-item>
          <el-form-item label="店鋪地址">
            <span>{{ props.row.address }}</span>
          </el-form-item>
          <el-form-item label="商品描述">
            <span>{{ props.row.desc }}</span>
          </el-form-item>
        </el-form>
      </template>
    </el-table-column>
    <el-table-column
      label="商品 ID"
      prop="id">
    </el-table-column>
    <el-table-column
      label="商品名稱"
      prop="name">
    </el-table-column>
    <el-table-column
      label="描述"
      prop="desc">
    </el-table-column>
  </el-table>
</template>

<style>
  .demo-table-expand {
    font-size: 0;
  }
  .demo-table-expand label {
    width: 90px;
    color: #99a9bf;
  }
  .demo-table-expand .el-form-item {
    margin-right: 0;
    margin-bottom: 0;
    width: 50%;
  }
</style>

<script>
  export default {
    data() {
      return {
        tableData5: [{
          id: '12987122',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987123',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987125',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }, {
          id: '12987126',
          name: '好滋好味雞蛋仔',
          category: '江浙小喫、小喫零食',
          desc: '荷蘭優質淡奶,奶香濃而不膩',
          address: '上海市普陀區真北路',
          shop: '王小虎夫妻店',
          shopId: '10333'
        }]
      }
    },
     methods: {
         rowClick(row,column,event){
        this.$refs.refTable.toggleRowExpansion(row);
      },
      expandChange(row,expandedRows){
        if(expandedRows.length>1){
          expandedRows.shift()
        }
      }
  }
</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章