Tengo una vista dinámica:
<div id="myview">
<div :is="currentComponent"></div>
</div>
con una instancia de Vue asociada:
new Vue ({
data: function () {
return {
currentComponent: 'myComponent',
}
},
}).$mount('#myview');
Esto me permite cambiar mi componente de forma dinámica.
En mi caso, tengo tres componentes diferentes: myComponent, myComponent1, y myComponent2. Y cambio entre ellos así:
Vue.component('myComponent', {
template: "<button @click=\"$parent.currentComponent = 'myComponent1'\"></button>"
}
Ahora, me gustaría pasarle accesorios myComponent1.
¿Cómo puedo pasar estos accesorios cuando cambio el tipo de componente a myComponent1?
javascript
vue.js
vuejs2
vue-component
Epitouille
fuente
fuente

propName="propValue". ¿Esa es tu pregunta?<myComponent1 propName="propValue">, cambio el componente mediante programación con$parent.currentComponent = componentName<div :is="currentComponent"></div>. Ahí es donde agregarías el atributo.myComponent1toma accesorios ymyComponent2no acepta accesoriosRespuestas:
Para pasar props dinámicamente, puede agregar la
v-binddirectiva a su componente dinámico y pasar un objeto que contenga sus nombres y valores de prop:Entonces, su componente dinámico se vería así:
Y en su instancia de Vue,
currentPropertiespuede cambiar según el componente actual:Así que ahora, cuando
currentComponentseamyComponent, tendrá unafoopropiedad igual a'bar'. Y cuando no lo sea, no se transferirán propiedades.fuente
<component>(here)</component>. ¿Es eso posible?<slot>para cada componente que está renderizando dinámicamente. vuejs.org/v2/guide/components-slots.htmlTambién puede prescindir de la propiedad calculada e insertar el objeto en línea.
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>Se muestra en los documentos de V-Bind: https://vuejs.org/v2/api/#v-bind
fuente
Podrías construirlo como ...
fuente
Si ha importado su código a través de require
también puede hacer referencia al componente a través de la propiedad name si su componente lo tiene asignado
fuente