Ich habe ein Problem, wenn eine untergeordnete Komponente verwendet wird. Eine Liste wird nicht basierend auf einer darin übergebenen Komponente aktualisiert. Wenn sich die Array-Daten comments
ändern, wird die Liste nicht aktualisiert, wenn eine untergeordnete Komponente verwendet wird.Vue.js: Die Liste wird nicht aktualisiert, wenn die untergeordnete Komponente verwendet wird
TopHeader Vorlage:
<template>
<ul v-for="comment in comments">
// If don't use a child component, it updates whenever `comments` array changes:
<li>
<div>
/r/{{comment.data.subreddit}} ·
{{comment.data.score}}
</div>
<div class="comment" v-html="comment.data.body"></div>
<hr>
</li>
</ul>
</template>
TopHeader Komponente:
import Comment from 'components/Comment'
export default {
name: 'top-header',
components: {
Comment
},
data() {
return {
username: '',
comments: []
}
},
methods: {
fetchData: function(username){
var vm = this;
this.$http.get(`https://www.reddit.com/user/${username}/comments.json?jsonp=`)
.then(function(response){
vm.$set(vm, 'comments', response.body.data.children);
});
}
}
}
Wenn ich jedoch eine untergeordnete Komponente verwenden Sie es nicht aktualisiert.
Modified TopHeader Vorlage:
<template>
<ul v-for="comment in comments">
// If I instead use a component with prop data, it does not update
<comment :data="comment.data"></comment>
</ul>
</template>
Kommentar Kind Vorlage:
<template>
<li>
<div>
/r/{{subreddit}} ·
{{score}}
</div>
<div class="comment" v-html="body"></div>
<hr>
</li>
</template>
Kommentar Kind Komponente:
export default {
name: 'comment',
props: ['data'],
data() {
return {
body: this.data.body,
subreddit: this.data.subreddit,
score: this.data.score,
}
}
}
Wahrscheinlich wegen ungültigen Tag innerhalb 'ul' Tag. Weitere Informationen finden Sie unter [Einschränkungen bei der Analyse von DOM-Vorlagen] (https://vuejs.org/v2/guide/components.html#DOM-Template-Parsing-Caveats). –
@MathewJibin hat Recht über ungültige Tags in ul und li.Aber ich glaube nicht, dass das tatsächliche Problem hier ist - es könnte etwas damit zu tun haben, dass Sie dynamische Daten im Datenmodell zuweisen, so in der Tat haben Sie alles leer oder undefined in dein Fall. Irgendwelche Konsolenfehler? –
@MathewJibin - mit '
' hat immer noch das gleiche Problem – frosty