<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        vue項目中將element-ui table表格寫成組件的實現代碼

        來源:懂視網 責編:小采 時間:2020-11-27 21:55:12
        文檔

        vue項目中將element-ui table表格寫成組件的實現代碼

        vue項目中將element-ui table表格寫成組件的實現代碼:表格中我們經常需要動態加載數據, 如果有多個頁面都需要用到表格, 那我希望可以有個組件, 只傳數據過去顯示, 不用每個頁面都去寫這么一段內容: <el-table :data=tableData border size=mini fit highlight-current-r
        推薦度:
        導讀vue項目中將element-ui table表格寫成組件的實現代碼:表格中我們經常需要動態加載數據, 如果有多個頁面都需要用到表格, 那我希望可以有個組件, 只傳數據過去顯示, 不用每個頁面都去寫這么一段內容: <el-table :data=tableData border size=mini fit highlight-current-r

        表格中我們經常需要動態加載數據, 如果有多個頁面都需要用到表格, 那我希望可以有個組件, 只傳數據過去顯示, 不用每個頁面都去寫這么一段內容:

        <el-table :data="tableData" border size="mini" fit highlight-current-row height="500">
         <el-table-column type="index" align="center" fixed></el-table-column>
         <el-table-column prop="DHM" min-width="140px" label="時間" align="center"></el-table-column>
         <el-table-column prop="PLAZANO" min-width="100px" label="編碼" align="center"></el-table-column>
         <el-table-column prop="PLAZANAME" min-width="100px" label="名稱" align="center"></el-table-column>
         <el-table-column prop="CAR_PLATE" label="號碼" align="center"></el-table-column>
         <el-table-column prop="CARD_NO" min-width="120px" label="卡號" align="center"></el-table-column>
         <el-table-column prop="DATATYPE" label="數據類型" align="center" :formatter="formatDATATYPE"></el-table-column>
         <el-table-column prop="STAFFNAME" min-width="100px" label="姓名" align="center"></el-table-column>
         <el-table-column prop="MEDIATYPE" label="付款方式" align="center"></el-table-column>
         <el-table-column prop="COMP_CASH" label="計算費額" align="center"></el-table-column>
         <el-table-column prop="FACT_CASH" label="實收費額" align="center"></el-table-column>
         <el-table-column label="操作" min-width="140px" align="center">
         <template slot-scope="scope">
         <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
         <el-button type="text" size="small">編輯</el-button>
         </template>
         </el-table-column>
        </el-table>

         上面這段代碼是一個element-ui中tabele表格的形式,這里表頭都是已經固定的, 如果每個頁面都寫上這么一段, 不同的是表頭名字和字段,這樣子就有點重復,而且頁面的篇幅也就比較大了,于是把這塊寫成一個組件, 每個頁面引入這個組件, 再傳入數據。

          1.  表格組件:

        •首先  table.vue 組件可以這樣寫:

        <el-table :data="tableData" border size="mini" fit highlight-current-row height="500" :row-style="rowStyle" @row-dblclick="rowDblclick"
         v-loading="loading"
         element-loading-text="拼命加載中"
         element-loading-spinner="el-icon-loading"
         element-loading-background="rgba(0, 0, 0, 0.3)">
         <el-table-column type="index" align="center" fixed></el-table-column>
         <!-- prop: 字段名name, label: 展示的名稱, fixed: 是否需要固定(left, right), minWidth: 設置列的最小寬度(不傳默認值), oper: 是否有操作列
         oper.name: 操作列字段名稱, oper.clickFun: 操作列點擊事件, formatData: 格式化內容 -->
         <el-table-column v-for="(th, key) in tableHeader"
         :key="key"
         :prop="th.prop"
         :label="th.label"
         :fixed="th.fixed"
         :min-width="th.minWidth" align="center">
         <!-- 加入template主要是有操作一欄, 操作一欄的內容是相同的, 數據不是動態獲取的,不過我這里操作一欄的名字定死了(oper表示是操作這一列,否則就不是) -->
         <template slot-scope="scope">
         <div v-if="th.oper">
         <el-button v-for="(o, key) in th.oper" :key="key" @click="o.clickFun(scope.row)" type="text" size="small">{{o.name}}</el-button>
         </div>
         <div v-else>
         <span v-if="!th.formatData">{{ scope.row[th.prop] }}</span>
         <span v-else>{{ scope.row[th.prop] | formatters(th.formatData) }}</span>
         </div>
         </template>
         </el-table-column>
        </el-table>
        // 這里是傳入的數據 
        props: {
         tableData: {
         type: Array,
         default: function () {
         return []
         }
         },
         rowDblclick: {
         type: Function,
         default: (row, event, column) => { console.log('default: ' + row + '---' + event + '---' + column) }
         },
         tableHeader: {
         type: Array,
         default: function () {
         return []
         }
         },
         loading: {
         type: Boolean,
         default: false
         }
         },

        • 然后在其他組件中就可以引入table組件, 將數據傳給table顯示

         <table :tableData="tableData" :rowDblclick="rowDblclick" :tableHeader="tableHeader" :loading="loading"></table>

            其中 tableData是表格中要顯示的數據內容, 這個內容我的是從后臺查詢出來的, rowDblclick 是雙擊一行做的操作,如果不需要可以刪除, tableHeader 是表頭顯示的數據, loading 是表格加載的loading方式, 默認是沒有的

          表頭數據格式如下: formatData 是表格里面的數據需要做處理的方法, oper是操作列,查看和編輯是兩個按鈕,handleClick和editClick點擊按鈕的方法, 自行補充。

        export const tableHeader = [ // 表頭數據
         { prop: 'dhm', label: '時間', minWidth: '140px' },
         { prop: 'plazano', label: '編碼', minWidth: '100px' },
         { prop: 'plazano', label: '名稱', minWidth: '100px', formatData: val => store.getters.allPlazano2Map.get(val) },
         { prop: 'car_plate', label: '號碼' },
         { prop: 'card_no', label: '卡號', minWidth: "120px" },
         { prop: 'laneno', label: '數據類型', formatData: function(val) { return val.substr(2, 1) == '1' ? '出口' : '入口' } },
         { prop: 'staffname', label: '姓名', minWidth: '100px' },
         { prop: 'mediatype', label: '付款方式' },
         { prop: 'comp_cash', label: '計算費額' },
         { prop: 'fact_cash', label: '實收費額' },
         { prop: 'oper', label: '操作', fixed: 'right', minWidth: '140px',
         oper: [
         { name: '查看', clickFun: handleClick },
         { name: '編輯', clickFun: editClick }
         ]
         }
        ]

        現在的代碼可能會報錯, 下面這處的代碼是在全局注冊了一個過濾器,如果不注冊就找不到這個方法就會報錯,所以還需要注冊一個全局過濾器,如果你不需要對數據做處理可以不要這個過濾器

          2.  注冊全局過濾器, 我的是這樣寫的, 先新建個文件 filter.js 然后在里面寫個方法, export 出去

        export function formatters(val, format) {
         if (typeof (format) === 'function') {
         return format(val)
         } else return val
        }

          然后再在main.js中引入進來注冊全局的過濾器:

        import * as filters from './filters'
        Object.keys(filters).forEach(key => {
         Vue.filter(key, filters[key])
        })

          這個在每個頁面就都可以使用 formatters 這個過濾器方法了, 不過具體的過濾方法是由 format 這個參數傳進去的, 這里主要是因為不同的數據過濾的方法不一樣, 所以在表頭傳數據的時候就一并寫上處理數據的方法

          如果很多地方都使用了同一個方法, 可以將這個方法注冊成全局方法, 那么在每個頁面就可以直接使用該方法, 不用重復去寫。

          3.   注冊全局方法

          建立個js 文件(我的文件名為validate.js), 寫入該方法, 這里使用 exports.install 注冊全局方法,掛載到vue原型上

        exports.install = (Vue, options) => {
         Vue.prototype.validator = {
         lanenoTransf(val) { return val.substr(2, 1) == '1' ? '出口' : '入口' }
         }
        }

           然后在main.js中引入

        import validator from '@/utils/validate'
        Vue.use(validator)

          最后頁面上就可以直接使用

        { prop: 'laneno', label: '數據類型', formatData: this.lanenoTransf },

        最最后, 看我的表格:

        總結

        以上所述是小編給大家介紹的vue項目中將element-ui table表格寫成組件的實現代碼 ,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
        如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        vue項目中將element-ui table表格寫成組件的實現代碼

        vue項目中將element-ui table表格寫成組件的實現代碼:表格中我們經常需要動態加載數據, 如果有多個頁面都需要用到表格, 那我希望可以有個組件, 只傳數據過去顯示, 不用每個頁面都去寫這么一段內容: <el-table :data=tableData border size=mini fit highlight-current-r
        推薦度:
        標簽: 表格 VUE 代碼
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久精品7亚洲午夜a| 在线观看国产区亚洲一区成人 | 亚洲日韩精品无码AV海量| 最近免费mv在线电影| 亚洲欧洲自拍拍偷综合| 国产91免费在线观看| 亚洲视频在线观看地址| 国产免费不卡v片在线观看| 亚洲色大情网站www| 国产青草视频在线观看免费影院| 亚洲成熟丰满熟妇高潮XXXXX | 蜜臀亚洲AV无码精品国产午夜.| 日韩精品免费电影| 日本亚洲欧美色视频在线播放 | 亚洲国产av美女网站| 曰批视频免费30分钟成人| 亚洲av无码专区在线| 国产成人一区二区三区免费视频| 国产成人综合亚洲绿色| 久久亚洲高清综合| 未满十八18禁止免费无码网站| 亚洲第一精品电影网| 成人最新午夜免费视频| 香蕉视频免费在线| 国产亚洲精品国产| 波多野结衣免费在线| 亚洲国产精品精华液| 亚洲免费一区二区| 久久久久久一品道精品免费看| 亚洲人成影院午夜网站| 国产一区二区免费在线| 免费一级毛片在线播放视频| 亚洲午夜久久久久久尤物| 国产又大又粗又硬又长免费| 成在线人免费无码高潮喷水| 亚洲午夜精品在线| 国产亚洲精品激情都市| 182tv免费观看在线视频| 久久亚洲精品无码av| 国产AV无码专区亚洲A∨毛片| 99久久99久久精品免费看蜜桃|