2017-05-02 2 views
1

Ich habe eine einfache Vue-Vorlage, bestehend aus einem Objekt mit zwei Arrays (Dummy/Platzhalter vs tatsächliche Daten).Vue - Ändern von Modell-Arrays

data() { 
    var tableColumns = new Array(); 
    tableColumns.push({"dummyValues": ["date 1", "date 2"], "csvValues": []}); 

    var variables = { 
    "tableColumns": tableColumns 
    }; 

    return variables; 
} 

<td v-for="(item, key, index) in tableColumns"> 
    <span v-if="item.csvValues.length == 0" v-for="dummyValue in item.dummyValues"> 
     {{dummyValue}} <br /> 
    </span> 
    <span v-else v-for="value in item.csvValues"> 
     {{value}} <br /> 
    </span> 

</td> 

Zuerst habe ich nur Dummy-Werte. Etwas passiert auf dem Weg (Ich analysiere eine CSV-Datei) und ich muss die Dummy-Daten, die ich zuerst gerendert habe, mit den tatsächlichen Werten austauschen. Ich füge also meine realen Daten an das reale Datenfeld an (csvValues) und hoffe, dass die v-else sich darum kümmern wird.

Dies funktioniert nicht - warum, ist meine Vorgehensweise falsch?

+0

Versuchen [ 'Vue.set'] mit (https://vuejs.org/v2/api/ # Vue-set) – Phil

+0

Ihre Syntax/Verwendung des Datenteils scheint merkwürdig, definieren Sie hier keine Logik. Definieren Sie tableColumns wie folgt tableColomns: [], verschieben Sie als nächstes den Push-Part in eine Methode und rufen Sie sie zum Beispiel auf eingehängt auf. –

+1

@M.Suurland Es gibt keine Logik in meiner Methode data(), es gibt ein einfaches Array zurück. Das Problem besteht nicht darin, die Anfangsdaten anzuzeigen, sondern das Modell nachträglich zu modifizieren - die Änderungen werden nicht berücksichtigt. Ich kann die Daten beim Debuggen mit Chrome oder der Vue-Erweiterung überprüfen, die neuen Elemente sind vorhanden, aber sie werden nicht gerendert. Ich bekomme nur "undefiniert" für jeden von ihnen. – Buffalo

Antwort

0

Anscheinend kann Vue nicht zwischen zwei Datenquellen wechseln (dummyValues ​​und csvValues). Ich musste eine dritte verwenden, die nun Elemente aus den beiden ersten enthält/zyklisch behandelt. Anstatt also meine Ansicht von dem einen oder anderen Array zu erstellen, poppe/schiebe ich Dinge in mein drittes Array (renderingValues) und wiederhole dieses immer.

Möchten dummyValues rendern?
- pop alles (vorher csvValues) von renderingValues
- schieben alles dummyValues-renderingValues
- iterieren renderingValues

Verwandte Themen