Heim > Web-Frontend > View.js > Hauptteil

Detaillierte Erläuterung des Implementierungsprozesses der Paging-Bar-Komponente im Vue-Dokument

PHPz
Freigeben: 2023-06-20 09:15:27
Original
1487 Leute haben es durchsucht

Vue ist ein beliebtes JavaScript-Framework und muss während der Entwicklung häufig die Paging-Funktion verwenden. Die Vue-Dokumentation stellt eine Paging-Bar-Komponente bereit, die Entwicklern eine bequeme und schnelle Möglichkeit bietet, Paging zu implementieren. In diesem Artikel wird der Implementierungsprozess der Paging-Leistenkomponente ausführlich vorgestellt.

Zunächst finden wir in der offiziellen Dokumentation von Vue die spezifische Implementierung der Paginierungskomponente. Führen Sie in der Komponente zunächst die Vue-Komponente und den CSS-Stil ein:

<template>
  <nav>
    <ul class="pagination">
      <li v-if="current_page > 1">
        <a href="" aria-label="Previous"
           @click.prevent="changePage(current_page - 1)">
          <span aria-hidden="true">&laquo;</span>
        </a>
      </li>
      <li v-for="page in pages"
          v-bind:class="[ page == current_page ? 'active' : '' ]">
        <a href=""
           @click.prevent="changePage(page)">@{{ page }}</a>
      </li>
      <li v-if="current_page < last_page">
        <a href="" aria-label="Next"
           @click.prevent="changePage(current_page + 1)">
          <span aria-hidden="true">&raquo;</span>
        </a>
      </li>
    </ul>
  </nav>
</template>

<style>
  .pagination li {
    cursor: pointer;
  }
  .pagination li.active span {
    background-color: #3490dc;
    color: #fff;
    border-color: #3490dc;
  }
</style>
Nach dem Login kopieren

In dieser Vorlage können wir die folgenden wichtigen Punkte sehen:

  • v-if und v-for </ code>Anweisung: Verwenden Sie <code>v-if, um zu steuern, ob die vorherige und die nächste Seite angezeigt werden, und verwenden Sie v-for, um die Seitenzahlen zu durchlaufen.
  • v-ifv-for指令:通过v-if控制上一页和下一页是否显示,通过v-for遍历分页页码。
  • class绑定:通过v-bind:class绑定当前页的样式(active)。
  • @click.prevent指令:通过@click.prevent监听分页页码的点击事件。
  • {{}}标记:通过{{}}标记来显示分页页码。

下面我们根据这些关键点逐一解析。

前一页和后一页的控制

首先,我们需要根据当前页码数来确定上一页和下一页是否需要显示。根据模板中v-if的实现,我们可以知道v-if="current_page > 1"表示当前页码大于1时才显示上一页的按钮。

同理,v-if="current_page < last_page"表示当前页码小于最大页码时才显示下一页的按钮。

页码的遍历

接下来,我们需要在页面上展示分页的页码列表。根据模板中v-for的实现,我们可以知道v-for="page in pages"中的pages是Vue计算属性(computed)中返回的数组。

这里我们需要计算总共有多少页,以及页码列表中需要展示哪些页码。我们使用Vue计算属性来实现:

computed: {
  pages: function() {
    var pages = [];
    for (var i = this.current_page - this.offset; i <= this.current_page + this.offset; i++) {
      if (i > 0 && i <= this.last_page) {
        pages.push(i);
      }
    }
    return pages;
  }
}
Nach dem Login kopieren

其中,pages是页码列表,current_page是当前页码,last_page是最大页码。offset是偏移量,表示当前页码的左右各展示几个页码。

通过计算,我们得到页码列表中应该展示哪些页码。然后在模板中使用v-for遍历计算得到的页码,将列表展示在页面上。

样式的绑定

为了让当前页码的样式显得与众不同,我们需要在模板中给当前页加上指定的class。在模板中,我们使用v-bind:class来实现这个功能。

<li v-for="page in pages"
    v-bind:class="[ page == current_page ? 'active' : '' ]">
  <a href=""
     @click.prevent="changePage(page)">@{{ page }}</a>
</li>
Nach dem Login kopieren

在这段代码中,v-bind:class绑定了一个数组。数组中有两个元素。第一个是判断当前页码与遍历到的页码是否相等,如果相等,则绑定一个active的class,表示当前页码。如果不相等,则绑定一个空字符串的class。通过这个方式,我们就可以实现给当前页码绑定指定的样式。

点击事件的监听

当用户点击某一页码时,我们需要获取该页码并进行相应的跳转或者数据请求等操作。在Vue中,我们通过@click.prevent来注册点击事件并阻止默认行为。

<a href=""
   @click.prevent="changePage(page)">@{{ page }}</a>
Nach dem Login kopieren

这里的changePage是一个方法,我们在Vue实例中定义这个方法。

methods: {
  changePage: function(page) {
    this.current_page = page;
    this.$emit('page-changed', page);
  }
}
Nach dem Login kopieren

在这个方法中,我们更新当前页码并触发(emit)一个自定义事件page-changedclass-Bindung: Binden Sie den Stil der aktuellen Seite (aktiv) über v-bind:class.

@click.prevent-Befehl: Verwenden Sie @click.prevent, um das Klickereignis der Paginierungsseitennummer zu überwachen.

{{}}-Tag: Verwenden Sie das {{}}-Tag, um Paginierungsseitenzahlen anzuzeigen.

Lassen Sie uns diese Schlüsselpunkte einzeln analysieren.

Kontrolle der vorherigen und nächsten Seiten🎜🎜Zunächst müssen wir anhand der aktuellen Seitenzahl bestimmen, ob die vorherige und die nächste Seite angezeigt werden müssen. Gemäß der Implementierung von v-if in der Vorlage können wir wissen, dass v-if="current_page > 1" bedeutet, dass die Schaltfläche der vorherigen Seite angezeigt wird wird nur angezeigt, wenn die aktuelle Seitenzahl größer als 1 ist. 🎜🎜Ähnlich bedeutet v-if="current_page < last_page", dass die Schaltfläche „Nächste Seite“ nur angezeigt wird, wenn die aktuelle Seitenzahl kleiner als die maximale Seitenzahl ist. 🎜🎜Durchlauf der Seitenzahlen🎜🎜Als nächstes müssen wir die paginierte Seitenzahlenliste auf der Seite anzeigen. Gemäß der Implementierung von v-for in der Vorlage können wir erkennen, dass pages in v-for="page in seiten" ein ist Vue berechnete Eigenschaft (berechnet). 🎜🎜Hier müssen wir berechnen, wie viele Seiten es insgesamt gibt und welche Seitenzahlen in der Seitenzahlenliste angezeigt werden müssen. Um dies zu erreichen, verwenden wir von Vue berechnete Eigenschaften: 🎜rrreee🎜 Darunter ist pages eine Liste von Seitenzahlen, current_page ist die aktuelle Seitenzahl und last_page ist die maximale Seitenzahl. <code>offset ist der Offset, der angibt, wie viele Seitenzahlen links und rechts von der aktuellen Seitenzahl angezeigt werden. 🎜🎜Durch Berechnung erhalten wir, welche Seitenzahlen in der Seitenzahlenliste angezeigt werden sollen. Verwenden Sie dann v-for in der Vorlage, um die berechneten Seitenzahlen zu durchlaufen und die Liste auf der Seite anzuzeigen. 🎜🎜Stilbindung🎜🎜Um den Stil der aktuellen Seitennummer eindeutig zu machen, müssen wir die angegebene Klasse zur aktuellen Seite in der Vorlage hinzufügen. In der Vorlage verwenden wir v-bind:class, um diese Funktion zu implementieren. 🎜rrreee🎜In diesem Code bindet v-bind:class ein Array. Es gibt zwei Elemente im Array. Die erste besteht darin, festzustellen, ob die aktuelle Seitenzahl mit der durchlaufenen Seitenzahl übereinstimmt. Wenn sie gleich sind, binden Sie eine aktive-Klasse, um die aktuelle Seitenzahl darzustellen. Wenn nicht gleich, binden Sie eine leere String-Klasse. Auf diese Weise können wir den angegebenen Stil an die aktuelle Seitenzahl binden. 🎜🎜Klickereignisüberwachung🎜🎜Wenn der Benutzer auf eine bestimmte Seitenzahl klickt, müssen wir die Seitenzahl abrufen und entsprechende Sprünge oder Datenanforderungen durchführen. In Vue verwenden wir @click.prevent, um Klickereignisse zu registrieren und Standardverhalten zu verhindern. 🎜rrreee🎜changePage hier ist eine Methode, wir definieren diese Methode in der Vue-Instanz. 🎜rrreee🎜Bei dieser Methode aktualisieren wir die aktuelle Seitennummer und lösen (senden) ein benutzerdefiniertes Ereignis page-changed aus. Durch dieses benutzerdefinierte Ereignis können wir das Ereignis in der übergeordneten Komponente abhören und bestimmte Vorgänge implementieren. 🎜🎜Zusammenfassung🎜🎜Anhand der obigen Analyse können wir sehen, dass die Implementierung der Vue-Paging-Bar-Komponente relativ einfach ist. Durch die Beherrschung der zugrunde liegenden Prinzipien dieser Komponente können wir das Vue-Framework jedoch geschickter nutzen und die Paging-Funktion in der tatsächlichen Entwicklung flexibler und bequemer anwenden. 🎜

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Implementierungsprozesses der Paging-Bar-Komponente im Vue-Dokument. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage