Vous devez utiliser seulement one Instance de vue comme @shrpne mentionné.
Si vous gardez instanciation des instances Vue pour tous les composants, vous rencontrez des problèmes lors du débogage ou avec la communication de composants et dans l'ensemble cela devient très missy et vous manquez sur la communication parent-enfant et l'héritage fourni par Vue.
Je ne connais pas votre architecture Vue, mais je travaille actuellement sur un manuel pour travailler avec Vue dans AEM. Le principe de base est d'utiliser inline-template
et vanilla-js de Vue, Pas de tapuscrit, nodeJS build, jsx ou autre chose au moment de la construction, juste vanilla-js de sorte que lorsque votre page est chargée et avant même que votre paquet js est présent , le DOM est déjà là, il vous suffit de monter les composants en instanciant une instance de Vue qui va monter tous les composants. C'est aussi génial pour le référencement (à moins que vous ne projetiez de rendre des composants Vue de côté serveur en Java ... ce qui est théoriquement possible, mais bonne chance!)
Voici un échantillon AEM/composant Vue:
<simple-counter inline-template>
<button v-bind:style="style" v-on:click="add">${properties.clicksText || 'clicks: '} {{ counter }}</button>
</simple-counter>
JS:
Remarquez comment il ne dispose pas d'un modèle dans la JS, parce qu'il est inline ci-dessus
Vue.component('simple-counter', {
data: function() {
return {
counter: 0,
style: {
color: 'red',
width: '200px'
}
}
},
methods: {
add: function() {
this.counter = this.counter + 1;
this.style.color = this.style.color == 'red' ? 'green' : 'red';
}
}
})
Vous pouvez créer plus de composants AEM de cette manière, puis à la fin de votre clientlib lorsque tous vos composants Vue ont été enregistrés, vous pouvez exécuter:
new Vue({ el: '#app'})
Ceci, bien sûr, suppose que votre page body
ou un autre élément parent a l'id: app
.
Dans la deuxième partie, comment activer la remontée des composants après l'envoi de la boîte de dialogue de création, vous pouvez simplement actualiser la page.
J'ai une question sur la façon dont nous pouvons re-monter des composants sans rafraîchir la page here L'idée de base est d'ajouter un événement afteredit
au composant et exécuter une nouvelle instance Vue uniquement sur le composant nouvellement muté .. . travaille encore