vue+element-ui 修改動態生成的表格(el-table)中的資料
客戶又提需求了(/微笑)
不管需求是啥,為難我就是無理取鬧,哼!
原本就是動態生成的el-table表格,裡面的資料還要修改。意味著要修改的欄位名都是動態的,我需要動態的宣告input框繫結的變數,其實本來以為就那麼回事兒,就跟以前做得差不了太多,結果搞了一天!!!雖然是實現了,但至今沒弄明白我遇到的問題是怎麼肥四。
<!--顯示資料表格-->
<div class="table_common_container lsz_content-load active-table" style="height: 100%">
<el-table v-show="show_table" border :data="data_list" v-loading="loading" element-loading-text="loading" @selection-change="handleSelect" height="100%" >
<el-table-column prop="selected" type="selection" width="40" v-model="multipleSelection">
</el-table-column>
<el-table-column v-for="(item,index) in table_labels" :label="item" width="200" :prop="table_props[index]" :key="index" show-overflow-tooltip></el-table-column>
</el-table>
<el-table v-show="!show_table" border :data="null_arr" v-loading="loading" element-loading-text="loading" height="100%" >
<el-table-column v-for="(item,index) in null_arr" :label="item" width="200" :prop="table_props[index]" :key="index" show-overflow-tooltip></el-table-column>
</el-table>
</div>
<!--編輯彈框-->
<el-dialog :title="$t('search_data.action.update')" v-if="is_change_data" :visible.sync="is_change_data" width="450px">
<div>
<el-form :model="change_data" ref="change_data" label-width="120px" :rules="rules">
<el-form-item v-for="(item,index) in table_labels" :key="index" :label="item" prop="type_code" style="width: 95%;display: inline-block;" >
<el-input v-model="cloneMultipleSelection[0][change_props[index]]"
autocomplete="off"></el-input>
</el-form-item>
</el-form>
</div>
<span slot="footer" class="dialog-footer">
<el-button type="primary" @click="confirmChange">{{$t('button.confirm')}}</el-button>
<el-button @click="reset(change_data)">{{$t('button.cancel')}}</el-button>
</span>
</el-dialog>
用了el-table自帶的CheckBox來實現選中表格中的資料進而實現修改。
將選中的行的資料存入multipleSelection(是一個物件陣列)
原本想像之前專案中實現修改一樣,將修改的資料繫結在一個物件change_data中,然後change_data先賦值為multipleSelection[0]裡相應的值,我甚至用了深拷貝先將multipleSelection賦值給另一個變數cloneMultipleSelection,為了在修改的時候不會影響multipleSelection,但我發現事情並沒有那麼簡單。
//這裡是給編輯頁面獲取原始值的程式碼
this.is_change_data=true
this.cloneMultipleSelection=this.deepClone(this.multipleSelection)
this.change_props=this.deepClone(this.table_props)
console.log(this.cloneMultipleSelection[0])
for(let item in this.cloneMultipleSelection[0]){
this.change_data[item]=this.cloneMultipleSelection[0][item]
//深拷貝方法
deepClone(obj){
var o;
// 如果 他是物件object的話 , 因為null,object,array 也是'object';
if (typeof obj === 'object') {
// 如果 他是空的話
if (obj === null) {
o = null;
} else {
// 如果 他是陣列arr的話
//console.log(obj instanceof Array)
if (obj instanceof Array) {
o = [];
for (var i = 0, len = obj.length; i < len; i++) {
o.push(this.deepClone(obj[ i ]));
}
} else { // 如果 他是物件object的話
o = {};
for (var j in obj) {
o[ j ] = this.deepClone(obj[ j ]);
}
}
}
} else {
o = obj;
}
return o;
},
<el-dialog :title="$t('search_data.action.update')" v-if="is_change_data" :visible.sync="is_change_data" width="450px">
<!--我只要在這裡不加v-if,資料表格就無法正常顯示資料。我的資料顯示都是之前做得妥妥的,沒任何毛病-->
<el-form-item v-for="(item,index) in table_labels" :key="index" :label="item" prop="type_code" style="width: 95%;display: inline-block;" >
<el-input v-model="cloneMultipleSelection[0][change_props[index]]" autocomplete="off"></el-input>
</el-form-item>
<!--然後這裡v-model改為v-model="change_data[change_props[index]]"表格就可以正常顯示資料,但是!!!修改資料的時候,input框的值不能修改!人間迷惑-->
然後el-dialog的顯示隱藏好像必須要通過:visible.sync來實現,所以我用了v-if,還用了:visible.sync
相關文章
- vue + element UI 中 el-table 資料匯出Excel表格VueUIExcel
- asp.net動態表格生成ASP.NET
- 動態生成一個m行n列的表格
- JavaScript動態向表格新增資料JavaScript
- Django中的ORM如何通過資料庫中的表格資訊自動化生成Model 模型類?DjangoORM資料庫模型
- vue - elementui 元件 表格 <el-table> 列頭修改背景顏色VueUI元件
- PHP--動態生成sql查詢表格PHPSQL
- JSP頁面動態生成表格併為表格新增事件JS事件
- 聊聊 Vue 中 title 的動態修改Vue
- element-plus 如何修改el-table 捲軸高度,el-table捲軸放置在表格外面
- layui動態新增刪除表格,並獲取表格中的值UI
- mysql 動態生成測試資料MySql
- JavaScript動態建立表格和增加表格的行JavaScript
- JS動態生成表格後 合併單元格JS
- elementui表格動態資料單元格合併UI
- vue+element-ui中獲取頁面資料VueUI
- 修改MySQL中的資料MySql
- 如何在iView中動態建立表格View
- vue+element-ui el-table元件內表單驗證問題VueUI元件
- vue中echarts的動態渲染資料watchVueEcharts
- javascript動態建立table表格並新增資料程式碼JavaScript
- el-table 合併相同資料的列
- el-table合併相同資料的行
- vue中動態修改陣列的展現(資料更新,檢視不更新驗證)Vue陣列
- 兩種動態建立表格的方法
- 開發動態編輯的表格
- 動態建立表格
- 透過連線資料庫來動態的生成樹的問題資料庫
- SVG 在 image 標籤中的動態修改技巧SVG
- 動態修改 NodeJS 程式中的變數值NodeJS變數
- Python資料展示 - 生成表格圖片Python
- .NET 中的動態編譯(生成exe檔案)編譯
- Kendo UI Grid中的動態資料(三)UI
- Kendo UI Grid中的動態資料(一)UI
- Ant自動打包(可動態修改包名、資源等)生成不同簽字不同包名的APPAPP
- el-table 多表格彈窗巢狀資料顯示異常錯亂問題巢狀
- vue+elementUI el-table匯出excel表格VueUIExcel
- vue+element-ui實現動態的許可權管理和選單渲染VueUI