VUE+Element UI實現簡單的表格行內編輯效果


原理是通過Css控制綁定的輸入控件與顯示值,在選中行樣式下對控件進行隱藏或顯示

 1 <!DOCTYPE html>
 2 <html>
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <!-- 引入樣式 -->
 7     <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
 8     <style>
 9         * {
10     margin: 0;
11     padding: 0
12 }
13 body {
14     font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, SimSun, sans-serif;
15     overflow: auto;
16     font-weight: 400;
17     -webkit-font-smoothing: antialiased;
18 }
19 .tb-edit .el-input {
20     display: none
21 }
22 .tb-edit .current-row .el-input {
23     display: block
24 }
25 .tb-edit .current-row .el-input+span {
26     display: none
27 }
28     </style>
29 </head>
30 
31 <body>
32     <div id="app">
33         <el-table :data="tableData" class="tb-edit" style="width: 100%" highlight-current-row @row-click="handleCurrentChange">
34             <el-table-column label="日期" width="180">
35                 <template scope="scope">
36                     <el-input size="small" v-model="scope.row.date" placeholder="請輸入內容" @change="handleEdit(scope.$index, scope.row)"></el-input> <span>{{scope.row.date}}</span>
37                 </template>
38             </el-table-column>
39             <el-table-column label="姓名" width="180">
40                 <template scope="scope">
41                     <el-input size="small" v-model="scope.row.name" placeholder="請輸入內容" @change="handleEdit(scope.$index, scope.row)"></el-input> <span>{{scope.row.name}}</span>
42                 </template>
43             </el-table-column>
44             <el-table-column prop="address" label="地址">
45                 <template scope="scope">
46                     <el-input size="small" v-model="scope.row.address" placeholder="請輸入內容" @change="handleEdit(scope.$index, scope.row)"></el-input> <span>{{scope.row.address}}</span>
47                 </template>
48             </el-table-column>
49             <el-table-column label="操作">
50                 <template scope="scope">
51                     <!--<el-button size="small" @click="handleEdit(scope.$index, scope.row)">編輯</el-button>-->
52                     <el-button size="small" type="danger" @click="handleDelete(scope.$index, scope.row)">刪除</el-button>
53                 </template>
54             </el-table-column>
55         </el-table>
56         <br>數據:{{tableData}}</div>
57 </body>
58 <script src="https://unpkg.com/vue/dist/vue.js"></script>
59 <script src="https://unpkg.com/element-ui/lib/index.js"></script>
60 <script>
61     var app = new Vue({
62         el: '#app',
63         data: {
64             tableData: [{
65                 date: '2016-05-02',
66                 name: '王小虎',
67                 address: '上海市普陀區金沙江路 1518 弄'
68             }, {
69                 date: '2016-05-04',
70                 name: '王小虎',
71                 address: '上海市普陀區金沙江路 1517 弄'
72             }, {
73                 date: '2016-05-01',
74                 name: '王小虎',
75                 address: '上海市普陀區金沙江路 1519 弄'
76             }, {
77                 date: '2016-05-03',
78                 name: '王小虎',
79                 address: '上海市普陀區金沙江路 1516 弄'
80             }]
81         },
82         methods: {
83             handleCurrentChange(row, event, column) {
84                 console.log(row, event, column, event.currentTarget)
85             },
86             handleEdit(index, row) {
87                 console.log(index, row);
88             },
89             handleDelete(index, row) {
90                 console.log(index, row);
91             }
92         }
93     })
94 </script> 
95 </html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM