后臺管理系統,需要這個功能點的特別多,但Element UI 的table組件本身是不提供的,所以需要自行拓展一下。 在這里,給大家寫一個簡單的示例,希望對小伙伴們有所幫助。
先看看效果圖:
我們直接去Element UI 官網 把 table組件的代碼copy過來
<template> <p> <el-table ref="filterTable" :data="tableData" style="width: 100%"> <el-table-column prop="date" label="日期" width="180" > </el-table-column> <el-table-column prop="name" label="姓名" width="180"> </el-table-column> <el-table-column prop="address" label="地址" :formatter="formatter"> </el-table-column> <el-table-column prop="tag" label="標簽" width="100" :filters="tagList" :filter-method="filterTag" filter-placement="bottom-end"> <template slot-scope="scope"> <el-tag :type="scope.row.tag === '家' ? 'primary' : 'success'" disable-transitions>{{scope.row.tag}}</el-tag> </template> </el-table-column> </el-table> </p></template><script> export default { data() { return { tagList: [{ text: '家', value: '家' }, { text: '公司', value: '公司' }], tableData: [{ date: '2016-05-02', name: '張三', address: '深圳', tag: '家' }, { date: '2016-05-04', name: '李四', address: '北京', tag: '公司' }, { date: '2016-05-01', name: '王五', address: '上海', tag: '家' }, { date: '2016-05-03', name: '李六', address: '北京', tag: '公司' }] } }, methods: { filterTag(value, row) { return row.tag === value; }, formatter(row, column) { return row.address; } } }</script>
稍稍的修整了一下,把tags的filters
提到data里面作為變量了,后續可以用。
然后我們添加一個按鈕,來添加行
<template> <p> <el-button @click="add">添加一條</el-button> <el-table > ... ... </el-table> </p></template><script>...methods: { add() { this.tableData.push({ date: '2019-4-01', name: '默認數據', address: '上海', tag: '公司', status: 1 }); }}...</script>
add
方法,向el-table
的數據源tableData
里面push
一條新的數據,并且添加一個字段,我這里叫status
(名字隨便啦)。主要用來區分這條數據的當前狀態,是編輯態,還是已經保存了的。1就是編輯態,如果保存了,我們就改為0。
有了status
這個狀態,我們就去修改el-table
組件,根據status
這個狀態來判斷,是顯示可以編輯,還是不可編輯。
這時候,我們就去自定義每列內容
日期列
...<el-table-column prop="date" label="日期" width="180"> <template slot-scope="scope"> <el-date-picker v-if="scope.row.status" v-model="scope.row.date" type="date" placeholder="選擇日期"> </el-date-picker> <span v-else>{{scope.row.date}}</span> </template></el-table-column>
判斷,如果scope.row.status
有值(編輯態),我們就用日期組件el-date-picker
,否則就用span
標簽,直接渲染數據。
這里日期組件同樣可以直接使用v-model
雙向綁定。
同理完成其他列
姓名
<el-table-column prop="name" label="姓名" width="180"> <template slot-scope="scope"> <el-input v-if="scope.row.status" v-model="scope.row.name"></el-input> <span v-else>{{scope.row.name}}</span> </template></el-table-column>
地址
<el-table-column prop="address" label="地址" :formatter="formatter"> <template slot-scope="scope"> <el-select v-if="scope.row.status" v-model="scope.row.address" placeholder="請選擇"> <el-option v-for="item in cityList" :key="item" :label="item" :value="item"> </el-option> </el-select> <span v-else>{{scope.row.address}}</span> </template></el-table-column>
標簽
<el-table-column prop="tag" label="標簽" width="100" :filters="tagList" :filter-method="filterTag" filter-placement="bottom-end"> <template slot-scope="scope"> <el-select v-if="scope.row.status" v-model="scope.row.tag" placeholder="請選擇"> <el-option v-for="item in tagList" :key="item.value" :label="item.text" :value="item.value"> </el-option> </el-select> <el-tag v-else :type="scope.row.tag === '家' ? 'primary' : 'success'" disable-transitions>{{scope.row.tag}}</el-tag> </template></el-table-column>
上面用到了1
個變量,用來選擇城市的,我們在data里面添加一下
...data() { return { cityList: ['北京', '深圳', '上海'] ... }}
這樣就基本完成了第一張圖的功能,但是需要新增的時候,同時保存沒有保存的功能。
這里我們會用到上面提到過的status
,1是編輯態,如果保存了,我們就改為0。
ok,在新增的時候,我們先判斷,有沒有未保存的數據,也就是有沒有數據的status
為1,如果是1,我們就將這條數據的status
改為0。
...add() { this.tableData.map(item=>{ if(item.status){ item.status = 0; } return item; }) ...}
是不是超級簡單了?
這里我們其實還有一個問題,日期重新選擇,保存后,格式不對,這個問題就留給大家了?看看你們有什么辦法來解決吧?期待你的答案。
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
阿根廷飛北京路線?首先,阿根廷和北京的距離接近19000公里。沒有直達航班,只有中轉。最受歡迎的路線之一是布宜諾斯艾利斯到法蘭克福,然后法蘭克福到北京或上海。另一條是連接布宜諾斯艾利斯和迪拜,然后從迪拜到北京或廣州。全程飛行不會少于30個小時,時間長,旅途辛苦。阿根廷飛北京路線?從洛杉磯轉機到東京,再從東京飛到北京。阿根廷到北京(兩國地理中心)的直線距離(飛行路線)為18898公里(11743英里...
123木頭人是男的唱的嗎?《123木頭人》的這首歌的原唱是一個女子團體“黑女孩”?!?23木頭人》是一首由徐潔兒和王亞軍作詞,徐潔兒作曲,省黑人女孩演唱的歌曲,收錄在該樂隊2006年發行的專輯《粉紅高壓電》中。后來123 Woodenhead有了男版,由歌手水煮魚演唱。黑妹的原名是黑澀谷美美,是2006年由星媒社成立的省女子歌唱團體。這個組合之前有9個成員,分別是吳映潔、黃暐婷、周宜霈、王婧喬、詹...
移動4g套餐哪個最劃算?8元天悅卡套餐最最合算8元天悅卡,月租8元,乾坤二卦30分鐘通話費,1元500M流量,自動續費,不用什么不花錢多。但,這個套餐好像老用戶肯定不能申請辦理。在網上有各種攻略這個可以做個參考,很多網友申請辦理成功了。我感覺這個套餐最合算,而且更適合保號,等待“攜號轉網”的用戶三大運營商4g套餐對比,哪一個更劃算?以貴州聯通為例,我公司有所推出4G全國組合套餐,里面乾坤二卦有流量...