J'ai une vue dynamique:
<div id="myview">
<div :is="currentComponent"></div>
</div>
avec une instance Vue associée:
new Vue ({
data: function () {
return {
currentComponent: 'myComponent',
}
},
}).$mount('#myview');
Cela me permet de changer mon composant de manière dynamique.
Dans mon cas, j'ai trois composantes différentes: myComponent
, myComponent1
et myComponent2
. Et je passe de l'un à l'autre comme ceci:
Vue.component('myComponent', {
template: "<button @click=\"$parent.currentComponent = 'myComponent1'\"></button>"
}
Maintenant, j'aimerais passer des accessoires à myComponent1
.
Comment puis-je transmettre ces accessoires lorsque je change le type de composant en myComponent1
?
javascript
vue.js
vuejs2
vue-component
Épitouille
la source
la source
propName="propValue"
. C'est ta question?<myComponent1 propName="propValue">
$parent.currentComponent = componentName
<div :is="currentComponent"></div>
. C'est là que vous ajouteriez l'attribut.myComponent1
prenez les accessoires etmyComponent2
ne prenez pas les accessoiresRéponses:
Pour passer des accessoires dynamiquement, vous pouvez ajouter la
v-bind
directive à votre composant dynamique et passer un objet contenant vos noms et valeurs d'accessoires:Ainsi, votre composant dynamique ressemblerait à ceci:
Et dans votre instance Vue,
currentProperties
peut changer en fonction du composant actuel:Alors maintenant, quand le
currentComponent
estmyComponent
, il aura unefoo
propriété égale à'bar'
. Et quand ce n'est pas le cas, aucune propriété ne sera transmise.la source
<component>(here)</component>
. C'est possible?<slot>
par défaut pour chaque composant que vous rendez dynamiquement. vuejs.org/v2/guide/components-slots.htmlVous pouvez également vous passer de la propriété calculée et intégrer l'objet.
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
Montré dans la documentation sur V-Bind - https://vuejs.org/v2/api/#v-bind
la source
Vous pouvez le construire comme ...
la source
Si vous avez importé votre code via require
vous pouvez également référencer le composant via la propriété name si vous l'avez attribué au composant
la source