2017-09-25 3 views
1

Ich würde gerne wissen, gibt es eine Möglichkeit, benutzerdefinierte Funktionen feuern - eine Funktion, wenn Kontrollkästchen ändert sich zu wahren Wert und eine andere, wenn es auf false-Wert (ohne $ watch) ändert.Feuer verschiedene Funktionen je nach Checkbox-Status in Vue2

Zum Beispiel: I-Eingang in root div

gewickelt haben
<div id="root"> 
    <input type="checkbox" v-model="editModeOn"> 
</div> 

und eine vue Instanz mit disableEditMode (auf Checkbox deaktiviert) und enableEditMode (auf Kontrollkästchen aktiviert)

new Vue({ 
    el: '#root', 
    props: { 
     editModeOn: { 
      type: Boolean, 
      default: false 
     } 
    }, 
    methods: { 
     disableEditMode() { 
      // some code 
     }, 
     enableEditMode() { 
      // some code 
     } 
    }, 
}); 

Wie kann ich diese Funktionalität erreichen? Vielen Dank!

+0

Ist das wirklich eine Komponente? Root Vue's haben generell keine "Requisiten". Wenn es * eine * Komponente ist, ändert sich der Wert dann von außerhalb der Komponente, was dazu führt, dass Sie mit der Änderung umgehen müssen? – Bert

+0

Ja, es ist eine echte Komponente und es kann Requisiten haben, wenn sie so erklärt haben (Sie können es versuchen). Dies wurde gemacht, um den Typ von editModeOn Prop anzugeben. – bashkovpd

Antwort

2

Behandeln Sie das Änderungsereignis.

@change="editModeOn ? enableEditMode() : disableEditMode()" 

new Vue({ 
 
    el: '#root', 
 
    data:{ 
 
     editModeOn: false 
 
    }, 
 
    methods: { 
 
     disableEditMode() { 
 
      console.log("disable") 
 
     }, 
 
     enableEditMode() { 
 
      console.log("enable") 
 
     } 
 
    }, 
 
});
<script src="https://unpkg.com/[email protected]"></script> 
 
<div id="root"> 
 
    <input type="checkbox" v-model="editModeOn" @change="editModeOn ? enableEditMode() : disableEditMode()"> 
 
</div>

+0

Ja, das ist eine großartige Lösung. Aber vielleicht ist es besser, @change zu verwenden (zum Beispiel, wenn die Eingabe aus bestimmten Gründen deaktiviert wird) – bashkovpd

+0

@bashkovpd Ich dachte nur das Gleiche. – Bert

Verwandte Themen