J'ai touché un mur Javascript de Vue.js.Accéder aux attributs du dernier objet dans le tableau dans Vue.js
Voici mon 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"]);
}
}
});
sortie pour les choses et things2 est très bien et comme prévu. La sortie pour things3 et things4 n'est pas conforme aux attentes. Je ne peux pas accéder à la clé "val" des objets dans un tableau. Je ne suis pas un expert sur les objets Javascript, mais cela devrait fonctionner, non? Qu'est-ce que je rate? Comment accéder à "val"?
Sortie:
{
"things": [
{
"val": "first"
},
{
"val": "second"
},
{
"val": ""
}
],
"things2": [
{
"val": "first"
},
{
"val": "second"
},
{
"val": ""
}
],
"things3": [
"",
"",
""
]
}
Voici une démo: https://jsfiddle.net/rcLgmv18/3/
MISE À JOUR: Il est clair maintenant que pour une raison quelconque il y a un objet à la fin du tableau avec {val: « » } J'obtiens le comportement désiré si je le fais (longueur - 2), au lieu de (longueur - 1). La question est pourquoi le dernier objet est-il bizarre avec val = ""? Est-ce un Vue.js ou une fonctionnalité Javascript?
Vous * accédez * à la propriété 'val' du dernier élément du tableau. La valeur de cette propriété est la chaîne vide '" "' et c'est ce qui est poussé à 'things3'. – thanksd
'this.things' est un tableau d'objets,' l' est le dernier élément de 'this.things', donc c'est un objet de clé' val'. 'l.val' donnant ainsi une chaîne vide. Cela semble normal. Qu'attendez-vous? – Psidom
@thanksd Vous êtes le meilleur! Pourquoi le dernier élément est vide? Je ne comprends pas ... – Chikipowpow