2017-10-12 5 views
2

Ich habe eine Liste von Filtern mit Kontrollkästchen. Ich versuche, jedes Kontrollkästchen seine eigenen Komponenten zu machen. Also durchsuche ich meine Filterliste, indem ich für jeden Filter eine Checkbox-Komponente hinzufüge. Die Vue.js documentation besagt, dass, wenn ich mehrere Kontrollkästchen habe, die das gleiche Modell verwenden, das Array mit dem Wert der Kontrollkästchen aktualisiert wird. Ich sehe das funktioniert, wenn die Gruppe der Checkboxen Teil der übergeordneten Komponente ist. Aber wenn ich das Kontrollkästchen zu einer Komponente mache und jede Checkbox-Komponente in einer Schleife hinzufüge, wird das Modell nicht wie erwartet aktualisiert.Vue.js Checkbox Komponente mehrere Instanzen

Wie kann ich eine Checkbox-Komponente haben, die ein Array auf dem Eltern aktualisiert? Ich weiß, dass ich dies tun kann, indem ich ein Ereignis für eine Methode auf der Komponente ausspreche, die das Array aktualisiert, aber die Vue-Dokumentation macht es so, als ob das Framework das für Sie tut.

Hier ist ein Codebeispiel I mit https://www.webpackbin.com/bins/-KwGZ5eSofU5IojAbqU3 herumgespielt habe

+1

Bitte geben Sie den relevanten Code in die Post selbst ein, nicht nur einen Link dazu. – thanksd

Antwort

2

Hier ist eine Arbeitsversion ist.

<template> 
    <div class="filter-wrapper"> 
    <input type="checkbox" v-model="internalValue" :value="value"> 
    <label>{{label}}</label> 
    </div> 
</template> 

<script> 
    export default { 
    props: ['checked','value', 'label'], 
    model: { 
     prop: "checked" 
    }, 
    computed:{ 
     internalValue: { 
     get(){return this.checked}, 
     set(v){this.$emit("input", v) } 
     } 
    } 
    } 
</script> 

Aktualisiert bin.

+0

Super, danke dafür. Bitte lassen Sie mich wissen, wenn ich verstehe, wie das funktioniert. Sie erstellen ein internes Modell für die Komponente und legen ihren Wert für das Modell fest, das vom übergeordneten Element übergeben wurde. verstehe ich das richtig? –

+0

@MichaelTurnwall Du hast es verstanden. Und wenn sich das interne Modell ändert, wird die Änderung an das übergeordnete Modell gesendet. – Bert

Verwandte Themen