Ich habe eine Kindkomponente contactView
der Komponente contacts-list
, die selbst ein Kind ist. Das Problem ist, dass ich nicht dynamisch den Inhalt dieser Komponentevue js übergibt Daten an untergeordnete Komponente
html
<div id="wrapper">
<component :is="currentView" keep-alive></component>
</div>
js ändern
var IndexPage = Vue.component('index-page', {
template: '<div>Welcome to index page</div>'
})
var Contact = Vue.component('contactView', {
template: `
<div class="person-info">
<ul v-for="contact in contacts">
<span>here</span>
<li v-if="contact.email">
<div class="icon icon-mail"></div>
{{contact.email}}
</li>
</ul>
</div>
`,
props: ['contacts']
})
var ContactsList = Vue.component('contacts-list', {
template: `
<div id="list">
list
<div v-for="item in items">
<div class="person">
person
<span class="name">{{item.name}}</span>
<button class="trig">Show {{item.id}}</button>
</div>
<contact-view :contacts="item.contacts"> </contact-view>
</div>
</div>`,
computed: {
items: function(){
return this.$parent.accounts
}
},
components: {
'contact-view': Contact
}
})
var app = new Vue({
el: '#wrapper',
data: {
contacts: [],
currentView: 'index-page'
}
})
app.currentView = 'contacts-list';
app.accounts = [{name: 'hello', id: 1}];
$(document).on("click", "button.trig", function(){
alert('triggered');
app.accounts[0].contacts = [{email: '[email protected]'}]
})
auf die Schaltfläche Nach einem Klick, wird die Komponente nicht angezeigt werden geänderte Daten Wie kann ich das richtig machen?
JQuery ist nur ein Beispiel. Die Methode, die Sie vorgeschlagen haben, funktioniert nicht für mich, https://jsfiddle.net/mcfpgkyo/3/ –
@ Marsel.V Sie fügen auch 'accounts' dynamisch hinzu. Ich habe die Antwort aktualisiert. https://jsfiddle.net/mcfpgkyo/4/ – Bert