Heim > Web-Frontend > View.js > Hauptteil

Entwicklung von Vue-Komponenten: Implementierung eines mehrstufigen Linkage-Selektors

王林
Freigeben: 2023-11-24 08:36:58
Original
1345 Leute haben es durchsucht

Entwicklung von Vue-Komponenten: Implementierung eines mehrstufigen Linkage-Selektors

Vue-Komponentenentwicklung: Implementierung eines mehrstufigen Verknüpfungsselektors

In der Front-End-Entwicklung ist ein mehrstufiger Verknüpfungsselektor eine häufige Anforderung, z. B. die Auswahl von Provinzen und Städten, die Auswahl von Jahr, Monat und Tag usw. In diesem Artikel wird anhand spezifischer Code-Implementierungsbeispiele erläutert, wie Vue-Komponenten zum Implementieren mehrstufiger Verknüpfungsselektoren verwendet werden.

Wie implementiert man eine mehrstufige Verknüpfungsauswahl?

Um mehrstufige Verknüpfungsselektoren zu implementieren, müssen Sie die Komponentenentwicklungsidee von Vue verwenden, die einen großen Selektor in mehrere Unterkomponenten aufteilt, die für die Darstellung jeder Optionsebene verantwortlich sind. Jedes Mal, wenn sich die Ebenenauswahl ändert, müssen die Optionen der nachfolgenden Ebenen aktualisiert werden, was die Verwendung eines Kommunikationsmechanismus zwischen Vue-Komponenten erfordert.

Darüber hinaus muss der Selektor den Anfangswert von außen empfangen und Ereignisbenachrichtigungen nach außen senden, wenn sich die Auswahl ändert. Dies kann mit props und $emit erreicht werden.

Lassen Sie uns diese mehrstufige Verknüpfungsauswahlkomponente Schritt für Schritt implementieren.

Schritt 1: Unterkomponenten definieren

Wir definieren zunächst die Selektor-Unterkomponente für jede Ebene. Das Folgende ist der Code für eine einfache Unterkomponente des Provinzselektors:

<template>
  <select v-model="selected">
    <option value="">请选择</option>
    <option v-for="item in options" :value="item">{{ item }}</option>
  </select>
</template>

<script>
export default {
  props: {
    options: {
      type: Array,
      required: true
    },
    value: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
      selected: this.value
    }
  },
  watch: {
    selected(newValue) {
      this.$emit('change', newValue)
    }
  }
}
</script>
Nach dem Login kopieren

Codeerklärung:

  • Verwenden Sie das Select-Tag, um das Dropdown-Optionsfeld zu rendern, und verwenden Sie das V-Modell, um den Wert des Stroms zu binden Option;
  • Verwenden Sie v-for, um die von der übergeordneten Komponente übergebenen Optionen dynamisch zu generieren.
  • Verwenden Sie Requisiten, um die von der übergeordneten Komponente übergebenen Optionen und Werte zu empfangen. und initialisieren Sie den ausgewählten Wert über data();
  • Verwenden Sie watch, um Änderungen im ausgewählten Wert zu überwachen, geben Sie ein Änderungsereignis aus, wenn sich die Option ändert, und benachrichtigen Sie die übergeordnete Komponente über den neuen Auswahlwert.

Schritt 2: Definieren Sie die übergeordnete Komponente

Als nächstes definieren wir die übergeordnete Komponente des mehrstufigen Verknüpfungsselektors. Diese Komponente ist für die Darstellung aller untergeordneten Komponenten und die Aktualisierung der Optionen nachfolgender untergeordneter Komponenten verantwortlich, wenn sich die Optionen ändern.

Das Folgende ist der Code für einen einfachen zweistufigen Verknüpfungsselektor:

<template>
  <div>
    <CitySelect :options="provinces" v-model="selectedProvince"/>
    <CitySelect :options="cities" v-model="selectedCity"/>
  </div>
</template>

<script>
import CitySelect from './CitySelect.vue'

export default {
  components: {
    CitySelect
  },
  data() {
    return {
      provinces: ['广东', '江苏', '浙江'],
      cities: {
        '广东': ['广州', '深圳'],
        '江苏': ['南京', '苏州'],
        '浙江': ['杭州', '宁波']
      },
      selectedProvince: '',
      selectedCity: ''
    }
  },
  watch: {
    selectedProvince(newValue) {
      this.selectedCity = ''
      if (newValue) {
        this.cities = this.$data.cities[newValue]
      } else {
        this.cities = []
      }
    }
  }
}
</script>
Nach dem Login kopieren

Codeerklärung:

  • Verwenden Sie zwei CitySelect-Unterkomponenten in der Vorlage, um die Auswahlfelder für Provinz und Stadt darzustellen, und binden Sie das aktuelle über v- Modell Ausgewählte Provinzen und Städte
  • Definieren Sie in der Datenfunktion zwei Arrays, Provinzen und Städte, und das Städteobjekt speichert alle Städte
  • In watch Überwachen Sie Änderungen in selectedProvince und aktualisieren Sie das Städte-Array, wenn sich die Provinz ändert. Dies wird zum Rendern des Städteauswahlfelds der nächsten Ebene verwendet.
Schritt 3: Alle Unterkomponenten kombinieren

Nachdem wir alle Unterkomponenten und übergeordneten Komponenten definiert haben, müssen wir nur noch alle Unterkomponenten kombinieren, um einen vollständigen mehrstufigen Verknüpfungsselektor zu bilden.

Das Folgende ist der Code eines einfachen dreistufigen Verknüpfungsselektors:

<template>
  <div>
    <RegionSelect :options="provinces" v-model="selectedProvince"/>
    <RegionSelect :options="cities" v-model="selectedCity"/>
    <RegionSelect :options="districts" v-model="selectedDistrict"/>
  </div>
</template>

<script>
import RegionSelect from './RegionSelect.vue'

export default {
  components: {
    RegionSelect
  },
  data() {
    return {
      provinces: ['广东', '江苏', '浙江'],
      cities: {
        '广东': ['广州', '深圳'],
        '江苏': ['南京', '苏州'],
        '浙江': ['杭州', '宁波']
      },
      districts: {
        '广州': ['天河区', '海珠区'],
        '深圳': ['福田区', '南山区'],
        '南京': ['玄武区', '鼓楼区'],
        '苏州': ['姑苏区', '相城区'],
        '杭州': ['上城区', '下城区'],
        '宁波': ['江东区', '江北区']
      },
      selectedProvince: '',
      selectedCity: '',
      selectedDistrict: ''
    }
  },
  watch: {
    selectedProvince(newValue) {
      if (newValue) {
        this.cities = this.$data.cities[newValue]
        this.selectedCity = ''
        this.districts = []
      } else {
        this.cities = []
        this.districts = []
      }
    },
    selectedCity(newValue) {
      if (newValue) {
        this.districts = this.$data.districts[newValue]
        this.selectedDistrict = ''
      } else {
        this.districts = []
      }
    }
  }
}
</script>
Nach dem Login kopieren

Codeerklärung:

    Verwenden Sie drei RegionSelect-Unterkomponenten in der Vorlage, um die Auswahlfelder von Provinzen, Städten und Bezirken jeweils zu rendern und sie über v zu binden -Modell Bestimmen Sie die aktuell ausgewählten Provinzen, Städte und Bezirke.
  • Definieren Sie drei Objekte: Provinzen, Städte und Bezirke. Das Array „Provinzen“ speichert alle Provinzen, das Objekt „Städte“ speichert alle Bezirke selectedProvince, selectedCity und selectedDistrict zeichnen die aktuell ausgewählte Provinz, Stadt und den ausgewählten Bezirk auf.
  • Überwachen Sie Änderungen in selectedProvince und selectedCity in der Überwachung und aktualisieren Sie die Optionen und ausgewählten Werte nachfolgender Auswahlfelder, wenn sich die Provinz oder Stadt ändert.
Der dreistufige Verknüpfungsselektor ist fertiggestellt! Sie können die Komponente in der Vue-Komponentenvorlage referenzieren, wie unten gezeigt:

<template>
  <div>
    <RegionSelect v-model="selectedRegion"/>
  </div>
</template>

<script>
import RegionSelect from './RegionSelect.vue'

export default {
  components: {
    RegionSelect
  },
  data() {
    return {
      selectedRegion: ['广东', '深圳', '南山区']
    }
  }
}
</script>
Nach dem Login kopieren
Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit Vue-Komponenten mehrstufige Verknüpfungsselektoren implementieren, einschließlich der Definition untergeordneter und übergeordneter Komponenten sowie des Kombinationsprozesses alle untergeordneten Komponenten. Anhand dieses Beispiels können wir die Grundideen der Vue-Komponentenentwicklung und den Kommunikationsmechanismus zwischen Komponenten verstehen. Natürlich müssen bei der tatsächlichen Entwicklung weitere Details berücksichtigt werden, z. B. die asynchrone Datenerfassung, die Änderung des Stils der Unterkomponente selbst usw. Diese Inhalte werden in diesem Artikel nicht behandelt.

Das obige ist der detaillierte Inhalt vonEntwicklung von Vue-Komponenten: Implementierung eines mehrstufigen Linkage-Selektors. 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