Heim > Web-Frontend > js-Tutorial > So verwenden Sie die Eltern-Kind-Komponente in Vue für die Kommunikation mit der Todolist-Komponente

So verwenden Sie die Eltern-Kind-Komponente in Vue für die Kommunikation mit der Todolist-Komponente

php中世界最好的语言
Freigeben: 2018-05-28 14:48:51
Original
2093 Leute haben es durchsucht

Dieses Mal zeige ich Ihnen, wie Sie die Eltern-Kind-Komponente in Vue für die Kommunikation mit der Todolist-Komponente verwenden. Welche Vorsichtsmaßnahmen gelten für die Verwendung der Eltern-Kind-Komponente in Vue für die Kommunikation mit dem Todolist? Hier sind die tatsächlichen Fälle, werfen wir einen Blick darauf.

1. Todolist-Funktionsentwicklung

<p id="root">
  <p>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </p>
  <ul>
   <li v-for="(item, index ) of list" :key="index">{{item}} </li>
  </ul>
 </p>
 <script>
 new Vue({
  el:"#root",
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   }
  }
 })
 </script>
Nach dem Login kopieren

2. Todolist-Komponenten aufteilen

Komponenten definieren und zwischen Komponenten kommunizieren

1. Globale Komponenten

 <p id="root">
  <p>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </p>
  <ul>
   <todo-item></todo-item>
  </ul>
 </p>
 <script>
 Vue.component('todo-item',{
  template:'<li>item</li>'
 })
...
Nach dem Login kopieren

2. Lokale Komponenten

müssen registriert werden, sonst wird ein Fehler gemeldet:

vue.js:597 [Vue warn] : Unbekanntes benutzerdefiniertes Element: – Haben Sie die Komponente korrekt registriert? Stellen Sie sicher, dass Sie die Option „Name“ angeben.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
 <script src="./vue.js"></script>
</head>
<body>
 <p id="root">
  <p>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </p>
  <ul>
   <todo-item></todo-item>
  </ul>
 </p>
 <script>
 //全局组件
 // Vue.component('todo-item',{
 //  template:'<li>item</li>'
 // })
 var TodoItem={
  template:'<li>item</li>'
 }
 new Vue({
  el:"#root",
  components:{
   'todo-item':TodoItem
  },
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   }
  }
 })
 </script>
</body>
</html>
Nach dem Login kopieren

KomponenteWert übergeben

Die übergeordnete Komponente übergibt den Wert über Attribute an die untergeordnete Komponente.

<p id="root">
  <p>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </p>
  <ul>
   <todo-item 
    v-for="(item ,index) of list"
    :key="index"
    :content="item"
   ></todo-item>
  </ul>
 </p>
 <script>
 Vue.component('todo-item',{
  props: ['content'], //接收从外部传递进来的content属性
  template:'<li>{{content}}</li>'
 })
 new Vue({
  el:"#root",
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   }
  }
 })
 </script>
Nach dem Login kopieren

3. Die Beziehung zwischen Komponenten und Instanzen

neue Vue()-Instanz

Vue .component ist eine Komponente

Jede Vue-Komponente ist eine Instanz von Vue.

Jedes Vue-Projekt besteht aus Tausenden von Vue-Instanzen.

Jede Vue-Instanz ist eine Komponente, und jede Komponente ist auch eine Instanz von Vue.

4. Implementieren Sie die Funktion Löschen von todolist

Die untergeordnete Komponente benachrichtigt die übergeordnete Komponente über das Publish-Subscribe Modus.

<p id="root">
  <p>
   <input type="text" v-model="inputValue">
   <button @click="handleSubmit">提交</button>
  </p>
  <ul>
   <todo-item 
    v-for="(item ,index) of list"
    :key="index"
    :content="item"
    :index="index"
    @delete=&#39;handleDelete&#39;
   ></todo-item>
  </ul>
 </p>
 <script>
 Vue.component('todo-item',{
  props: ['content','index'], //接收从外部传递进来的content属性
  template:'<li @click="handleDeleteItem">{{content}}</li>',
  methods:{
   handleDeleteItem:function(){
    this.$emit('delete',this.index);
   }
  }
 })
 new Vue({
  el:"#root",
  data:{
   inputValue:'',
   list:[]
  },
  methods:{
   handleSubmit:function(){
    this.list.push(this.inputValue);
    this.inputValue='';
   },
   handleDelete:function(index){
    this.list.splice(index,1);
Nach dem Login kopieren

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Wie man ein Tic-Tac-Toe-Spiel mit JS erstellt

Wie man vue2 verwendet. 0, um den Navigationsschutz zu implementieren

Das obige ist der detaillierte Inhalt vonSo verwenden Sie die Eltern-Kind-Komponente in Vue für die Kommunikation mit der Todolist-Komponente. 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