2017-02-15 5 views
0

Ich nehme dieses JSON-Objekt und übergebe es an diesen Vue. Es wird jedoch nicht auf meiner Seite aktualisiert, aber das Objekt ist da seit window.alert (jobj.Name) funktioniert gut. Hier ist mein Blick und meine Sicht.Vue Js aktualisiert nicht von JSON

var app2 = new Vue({ 
el: '#menuPage', 

data: { 
    HeaderTitle: 'NOT CHANGED', 
    content_body: 'test body', 
}, 
methods: { 
    loadMENU: function (jobj) { 

     app2 = this; 
     window.location.href = "tools/menu.html"; //relative to domain 

     window.alert(jobj.Name); 
     this.HeaderTitle = jobj.Name; 

    } 
} }); 




    <div id="menuPage">{{HeaderTitle}}</div> 

Es wird nur "NICHT GEÄNDERT" anstelle des Objektnamens angezeigt.

+0

versuchen, Ihr Codebeispiel zu verstehen ... so scheint es mir seltsam location.href zu ändern und dann this.HeaderTitle eingestellt. Wird dieser Code auf der Seite menu.html ausgeführt, und wenn ja, ist es möglich, dass Sie die Seite erneut laden (indem Sie location.href setzen) und das Vue-Objekt auf seinen ursprünglichen Zustand zurücksetzen? Funktioniert es, wenn Sie die window.location.href-Zeile auskommentieren? – Peter

+0

Der Grund, warum ich die href ändere, ist, weil ich auf einer anderen Seite login.html bin. Also in einem anderen Teil des Codes I Authenticate login, wenn es true (it does) zurückgibt, rufe ich app2.loadMENU (data) auf; Wenn die Daten ein JSON-Objekt sind, lade ich die Menu.html-Seite und aktualisiere alle darin enthaltenen Informationen.Ich kann die Seite laden, aber wie oben erwähnt, aktualisiert sie keine Informationen.Es zeigt nur das Preset "NICHT GEÄNDERT" an ' –

+1

Okay, ich glaube, ich verstehe das. Wenn Sie location.href setzen, machen Sie den Browser so, dass er zu einer neuen Seite navigiert, die alle Zustände der aktuellen Seite löscht, wenn das gleiche Skript auf der neuen Seite läuft Es wird eine brandneue Vue-Instanz erstellt (und HeaderTitle hat den Anfangswert von "NOT CHANGED"). – Peter

Antwort

0

Sie haben die Methode nicht aufgerufen. Sie sollten eine Schaltfläche verwenden, um die Methode auszulösen.

html

<div id="menuPage">{{HeaderTitle}} 
    <button v-on:click="loadMENU">button</button> 
</div> 

Javascript

var app2 = new Vue({ 
el: '#menuPage', 

data: { 
    HeaderTitle: 'NOT CHANGED', 
    content_body: 'test body', 
}, 
methods: { 
    loadMENU: function() { 

     app2 = this; 
     const herf = window.location.href; 
     window.alert(herf); 
     this.HeaderTitle = herf; 

    } 
} });