2017-03-10 4 views
7

ich vorbei eine Requisiten auf eine Komponente:Zugriff auf Requisiten in vue Komponentendaten Funktion

<template> 
    {{messageId}} 
    // other html code 
</template> 

<script> 
    export default { 
     props: ['messageId'], 
     data: function(){ 
     var theData={ 
      // below line gives ReferenceError messageId is not defined 
      somevar: messageId, 
      // other object attributes 
     } 
     } 
    } 
</script> 

In obigen Code, ich habe die Linie kommentiert, die den Fehler verursacht. Wenn ich diese Zeile entferne, funktioniert sie wie normal und Vorlage rendert richtig (und ich kann auch den erwarteten Wert von {{messageId}} sehen). Daher ist die Logik zum Übergeben von Daten korrekt.

Es scheint, dass der Weg zu messageId in Daten() falsch ist. Also, wie kann ich auf die Requisiten messageId in Daten zugreifen?

+1

'this.messageId' – Bert

+0

Auch Ihre Daten Funktion muss das Datenobjekt zurückgeben. – Bert

Antwort

8

Von der data()-Methode können Sie auf die Eigenschaften der Komponente verweisen, indem Sie this verwenden.

So in Ihrem Fall:

data: function() { 
    var theData = { 
    somevar: this.messageId, 
    // other object attributes 
    } 

    return theData; 
} 
+1

https://vuejs.org/v2/guide/components.html#On-Way-Data-Flow – user1398619

2

Um eine Daten Eigenschaft gleich einem Requisiten zuordnen, können Sie Watcher verwenden, wie folgend:

<script> 
    export default { 
     props: ['messageId'], 
     data: function(){ 
     var theData={ 
      somevar: "", 
      // other object attributes 
     } 
     }, 
     watch: { 
     messageId: function(newVal) { 
      this.somevar = newVal 
     } 
     } 
    } 
+2

Oder verwenden Sie eine 'berechnete' –

+0

@RoyJ Ja, das kann auch getan werden, aber wenn Sie die Daten aktualisieren möchten Variable, als Sie mit Getter berechnet verwenden müssen. – Saurabh

+0

Ich meine, Sie sollten das Datenelement durch eine berechnete ersetzen, wenn 'somevar' niemals von etwas anderem als dem Beobachter zugewiesen wird. –

Verwandte Themen