Heim  >  Artikel  >  Web-Frontend  >  So implementieren Sie Tabellenpaging in Vue + Element

So implementieren Sie Tabellenpaging in Vue + Element

亚连
亚连Original
2018-06-15 16:24:051824Durchsuche

Wie wir alle wissen, handelt es sich bei Element um eine Reihe von Vue.js-Backend-Komponentenbibliotheken, mit denen Sie Backend-Projekte einfacher und schneller entwickeln können. Der folgende Artikel führt Sie hauptsächlich in die relevanten Informationen zur Verwendung von Vue + Element zur Implementierung von Tabellenpaging und Front-End-Suche ein. Lassen Sie uns gemeinsam einen Blick darauf werfen.

Vorwort

ElementUI ist ein Vue-basiertes Front-End-Framework von Ele.me. Es hat uns dabei geholfen, eine Reihe von zu kapseln Funktionalitäten Komponenten wie Rastersysteme, Tabellen, Formulare, Baummenüs, Benachrichtigungen usw. Für Projekte, die sich mit Backend-Verwaltungsschnittstellen befassen, insbesondere Projekte, die nicht mit ie8 oder ie9 unten kompatibel sein müssen, ist ElementUI eine gute Wahl.

Außerdem ist die Dokumentation von ElementUI sehr ausführlich. Sie können schnell loslegen, indem Sie sich die Demo ansehen.

In diesem Artikel werden hauptsächlich die relevanten Inhalte zum Vue + -Element zur Implementierung von Tabellenpaging und Front-End-Suche vorgestellt. Ich werde im Folgenden nicht viel sagen ausführliche Einführung.

Implementierungsideen

1. Es wird viele Tabellen im Front-End- und Back-End-Management geben, und wenn es zu viele Tabellen gibt Daten, Paging ist erforderlich;

2. Wenn die Front-End-Interaktion den Server bei jeder Suche anfordert, erhöht sich der Druck auf den Server. Wenn die Datenmenge daher nicht sehr groß ist kann sofort zurückgegeben werden und das Frontend übernimmt den Abruf

3. Fügen Sie unten eine Demo ein

Beispielcode

<template>
<p>
 <el-input v-model="tableDataName" placeholder="请输入姓名" style="width:240px"></el-input>
 <el-button type="primary" @click="doFilter">搜索</el-button>
 <el-button type="primary" @click="openData">展示数据</el-button>
 <el-table
 :data="tableDataEnd"
 border
 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="地址">
 </el-table-column>
 </el-table>
 <el-pagination
  @size-change="handleSizeChange"
  @current-change="handleCurrentChange"
  :current-page="currentPage"
  :page-sizes="[1, 2, 3, 4]"
  :page-size="pageSize"
  layout="total, sizes, prev, pager, next, jumper"
  :total="totalItems">
 </el-pagination>
</p>
</template>
<script>
export default {
 data() {
 return {
  tableDataBegin: [
  {
   date: "2016-05-01",
   name: "王小虎",
   address: "上海市普陀区金沙江路 1518 弄"
  },
  {
   date: "2016-05-02",
   name: "王小虎",
   address: "上海市普陀区金沙江路 1517 弄"
  },
  {
   date: "2016-05-03",
   name: "王二虎",
   address: "上海市普陀区金沙江路 1519 弄"
  },
  {
   date: "2016-05-04",
   name: "王二虎",
   address: "上海市普陀区金沙江路 1516 弄"
  },
  {
   date: "2016-05-05",
   name: "王三虎",
   address: "上海市普陀区金沙江路 1518 弄"
  },
  {
   date: "2016-05-06",
   name: "王三虎",
   address: "上海市普陀区金沙江路 1517 弄"
  },
  {
   date: "2016-05-07",
   name: "王小虎",
   address: "上海市普陀区金沙江路 1519 弄"
  },
  {
   date: "2016-05-08",
   name: "王小虎",
   address: "上海市普陀区金沙江路 1516 弄"
  }
  ],
  tableDataName: "",
  tableDataEnd: [],
  currentPage: 4,
  pageSize: 2,
  totalItems: 0,
  filterTableDataEnd:[],
  flag:false
 };
 },
 created() {
 this.totalItems = this.tableDataBegin.length;
 if (this.totalItems > this.pageSize) {
  for (let index = 0; index < this.pageSize; index++) {
  this.tableDataEnd.push(this.tableDataBegin[index]);
  }
 } else {
  this.tableDataEnd = this.tableDataBegin;
 }
 },
 methods: {
 //前端搜索功能需要区分是否检索,因为对应的字段的索引不同
 //用两个变量接收currentChangePage函数的参数
 doFilter() {
  if (this.tableDataName == "") {
  this.$message.warning("查询条件不能为空!");
  return;
  }
  this.tableDataEnd = []
  //每次手动将数据置空,因为会出现多次点击搜索情况
  this.filterTableDataEnd=[]
  this.tableDataBegin.forEach((value, index) => {
  if(value.name){
   if(value.name.indexOf(this.tableDataName)>=0){
   this.filterTableDataEnd.push(value)
   }
  }
  });
  //页面数据改变重新统计数据数量和当前页
  this.currentPage=1
  this.totalItems=this.filterTableDataEnd.length
  //渲染表格,根据值
  this.currentChangePage(this.filterTableDataEnd)
  //页面初始化数据需要判断是否检索过
  this.flag=true
 },
 openData() {},
 handleSizeChange(val) {
  console.log(`每页 ${val} 条`);
  this.pageSize = val;
  this.handleCurrentChange(this.currentPage);
 },
 handleCurrentChange(val) {
  console.log(`当前页: ${val}`);
  this.currentPage = val;
  //需要判断是否检索
  if(!this.flag){
  this.currentChangePage(this.tableDataEnd)
  }else{
  this.currentChangePage(this.filterTableDataEnd)  
  }
 }, //组件自带监控当前页码
 currentChangePage(list) {
  let from = (this.currentPage - 1) * this.pageSize;
  let to = this.currentPage * this.pageSize;
  this.tableDataEnd = [];
  for (; from < to; from++) {
  if (list[from]) {
   this.tableDataEnd.push(list[from]);
  }
  }
 }
 }
};
</script>

Das Obige habe ich für Sie zusammengestellt. Ich hoffe, es wird Ihnen in Zukunft hilfreich sein.

Verwandte Artikel:

So verwenden Sie Vue.set(), um eine dynamische Datenantwort zu implementieren

So implementieren Sie die dynamische Bindung von Bildern in Vue Und Daten geben den Bildpfad zurück

So ändern Sie statische Bilder dynamisch und fordern Netzwerkbilder in Vue an

So verwenden Sie das Browser-Plugin -in Batarang in Angular

Überwachungsverwendung in Vue vorladen

So implementieren Sie Offset und einheitliche Animation in JS

So implementieren Sie die Pasteboard-Kopierfunktion mit JS

So implementieren Sie die Funktion zum Konvertieren von HTML in PDF in JS

Das obige ist der detaillierte Inhalt vonSo implementieren Sie Tabellenpaging in Vue + Element. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn