Vue+Element uiバックグラウンドリターンデータに基づいて動的なヘッダ操作を設定します。



バックエンドは多くの人が開発していますので、データフォーマットも規範化されていません。すべてのページは私一人で開発しています。だから、同じページとは違ってデータフォーマットの問題に戻ります。
一、element文書によって、prop属性を利用して対応値をバインドし、labelバインドします。
html

<el-table class="tb-edit" highlight-current-row :data="tableData" border style="width: 100%">         
 <template v-for="(col,index) in cols">          
 <el-table-column :prop="col.prop" :label="col.label"></el-table-column>        
 </template>       
</el-table>
返したデータの種類

data(): {
  return: {
    cols:[
      {prop: "327", label: "  "}, 
      {prop: "328", label: "     "},
      {prop: "329", label: "   "},
      {prop: "330", label: "   "}
   ],
   tableData:[
     {327: "24", 328: "20", 329: "18", 330: "2"},
     {327: "22", 328: "20", 329: "18", 330: "2"},
     {327: "22", 328: "20", 329: "18", 330: "2"},
     {327: "51", 328: "21", 329: "20", 330: "6"},
     {327: "21", 328: "20", 329: "18", 330: "2"},
   ]
  }
}
二、返したデータはすべて行列形式で、値は表のヘッダと配列下付きで対応します。
html

<el-table :data="table_content" border>        
 <el-table-column :label="val" v-for="(val, i) in table_head" :key="i">           
 <template slot-scope="scope">{{table_content[scope.$index][i]}}</template>        
 </el-table-column>       
</el-table>
返したデータの種類

data(): {
 return: {
 //     
 table_head:["  ", "     ", "   ", "   "],
 //       
 table_content:[
   ["24", "20", "18", "2"], 
   ["22", "20", "18", "2"],
   ["22", "20", "18", "2"],
   ["51", "21", "20", "6"],
   ["21", "20", "18", "2"],
 ],
 
 }
}
補足知識:element-uitableのヘッダfilterを使用して、バックグラウンドにデータを再取得することを実現します。
説明:私達はelement-uiを使う時、よく表を使います。表があればフィルタがあります。
このときは表の上にフィルターを使ってフィルタリングを行います。

このように、スクリーニング条件が増えると、このスクリーニングマシンはどんどん長くなります。これは全然かっこよくないです。
ここではelementが提供するfilters機能を使います。
見て上に行くと、すでにあったデータをフィルタするしかないと言っています。バックグラウンドでフィルタできません。
?改ページされていないデータは大丈夫です。私は改ページのデータを一つずつ10ページにします。最初のページを選別して3条を表示します。2ページ目は5条を表示しますか?
excuse me?
コードを付ける

<template>
 <el-table
  ref="filterTable"
  :data="tableData"
  @filter-change="fnFilterChangeInit"
  style="width: 100%">
  <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="[{ text: ' ', value: ' ' }, { text: '  ', value: '  ' }]"
   :filter-method="filterTag"
   column-key="tag"
   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>
</template>
 
<script>
 export default {
  data() {
   return {
    tableData: [],
    options:{
      tag: undefined
    }
   }
  },
  methods: {
   //       init                   
   //     options      
   init(options){
    this.tableData = [{
     date: '2016-05-02',
     name: '   ',
     address: '           1518  ',
     tag: ' '
    }, {
     date: '2016-05-04',
     name: '   ',
     address: '           1517  ',
     tag: '  '
    }, {
     date: '2016-05-01',
     name: '   ',
     address: '           1519  ',
     tag: ' '
    }, {
     date: '2016-05-03',
     name: '   ',
     address: '           1516  ',
     tag: '  '
    }]
   },
   // table column    ,      
   filterTag(value, row, column) {
    return true
   },
   // table    
   // filter     obj { column-key: Array }
   // Array[0]      
   fnFilterChangeInit(filter){
     // do something
     // example      if,  if         
     if(filter.tag){
      //               undefined          
      this.options.tag = filter.tag[0] == undefined ? '':filter.tag[0]
     }
     this.init(this.options)
   }
  }
 }
</script>
以上のVue+Element uiはバックグラウンドのデータに基づいて動的なヘッダ操作を設定します。つまり、小編集が皆さんに提供したすべての内容を共有します。