Ich habe eine Vue.js Javascript-Wand getroffen.Zugriff auf Attribute des letzten Objekts in Array in Vue.js
Hier ist mein Code:
<div id="app">
<h1>Things</h1>
<div v-for="thing in things">
<input v-model="thing.val">
</div>
<button @click="addThing">
NewThing
</button>
<pre>{{ $data | json }}</pre>
</div>
new Vue({
el: '#app',
data: {
things: [],
things2: [],
things3: [],
things4: []
},
methods: {
addFind: function() {
this.things.push({ val: '' });
var l = this.things[this.things.length-1];
this.things2.push(l);
this.things3.push(l.val);
this.things4.push(l["val"]);
}
}
});
Ausgang für Dinge und things2 ist gut und wie erwartet. Ausgabe für dinge3 und dinge4 ist nicht wie erwartet. Ich kann nicht auf den Wert "val" von Objekten in einem Array zugreifen. Ich bin kein Experte für Javascript-Objekte, aber das sollte funktionieren, oder? Was vermisse ich? Wie greife ich auf "val" zu?
Ausgang:
{
"things": [
{
"val": "first"
},
{
"val": "second"
},
{
"val": ""
}
],
"things2": [
{
"val": "first"
},
{
"val": "second"
},
{
"val": ""
}
],
"things3": [
"",
"",
""
]
}
Hier ist eine Demo: https://jsfiddle.net/rcLgmv18/3/
UPDATE: Es ist klar, jetzt, dass aus irgendeinem Grund gibt es ein Objekt am Ende des Arrays mit {val: "" }. Ich bekomme das gewünschte Verhalten (Länge - 2) statt (Länge - 1). Die Frage ist, warum ist das letzte Objekt irgendwie seltsam mit val = ""? Ist es eine Vue.js oder eine Javascript Funktion?
Sie * greifen * auf die val-Eigenschaft des letzten Elements des Arrays zu. Der Wert dieser Eigenschaft ist die leere Zeichenkette "" und das wird auf "sachen3" verschoben. – thanksd
'this.things' ist ein Array von Objekten,' l' ist das letzte Element von 'this.things', also ein Objekt des Schlüssels' val'. 'l.val' ergibt eine leere Zeichenfolge. Scheint normal. Was erwarten Sie? – Psidom
@thanksd Du bist der Beste! Warum ist das letzte Element leer? Ich verstehe es nicht ... – Chikipowpow