2017-07-18 4 views
0

Ich muss ein Ergebnis von einem Beobachter in Vue JS zurückgeben.Ergebnis von Watcher zurückgeben - Vue JS

Dies ist Teil der Komponente.

Wenn ich console.log (cancelBy), bekomme ich ein Datum, das ich dann in der Vorlage anzeigen muss. Ich habe den Kommentar dort eingefügt, wo ich ihn in der Vorlage brauche. Ich habe versucht, nur {{date()}}, {{date}} zu verwenden, aber das wird nicht die Variablen 'cancelBy' erhalten, die ich brauche.

Antwort

1

Fügen Sie einfach eine neue Daten Eigenschaft cancelBy:

data() { 
    return { 
    date: '', 
    cancelBy: null, 
    } 
}, 

und legen Sie dann, dass, wenn die Asynchron-Aufruf zurückkehrt:

let vm = this; 
this.$http.get(...).then(() => { 
    ... 
    vm.cancelBy = inAdvanceDate.format("YYYY-MM-DD, HH:mm:ss a"); 
} 

Und in Ihrer Vorlage können Sie etwas tun:

<div v-if="date !== ''"> 
    {{ date }}. 
    <span v-if="cancelBy !== null> 
    By {{ cancelBy }} 
    </span> 
</div> 
+0

Das ist genau das, was ich wollte. Vielen Dank! – David

+0

Warum haben Sie es in vm.cancelBy anstatt nur this.cancelBy geändert? – David

+1

Arrow-Funktionen ändern manchmal den Kontext von 'this', so dass es nicht mehr auf die Vue-Instanz zeigt. Ich konnte mich nicht erinnern, ob das in diesem Beispiel der Fall war, also habe ich einen Hinweis gesetzt, nur um sicherzugehen. Siehe [Using "this" in Vue] (https://stackoverflow.com/documentation/vue.js/9350/ using-this- in-vue # t = 201707181402413617476) – thanksd