Tenho uma visão dinâmica:
<div id="myview">
<div :is="currentComponent"></div>
</div>
com uma instância Vue associada:
new Vue ({
data: function () {
return {
currentComponent: 'myComponent',
}
},
}).$mount('#myview');
Isso me permite alterar meu componente dinamicamente.
No meu caso, eu tenho três componentes diferentes: myComponent
, myComponent1
, e myComponent2
. E eu alterno entre eles assim:
Vue.component('myComponent', {
template: "<button @click=\"$parent.currentComponent = 'myComponent1'\"></button>"
}
Agora, eu gostaria de passar adereços para myComponent1
.
Como posso passar esses adereços quando mudo o tipo de componente para myComponent1
?
javascript
vue.js
vuejs2
vue-component
Epitouille
fonte
fonte
propName="propValue"
. Essa é a sua pergunta?<myComponent1 propName="propValue">
Eu mudo o componente programaticamente com$parent.currentComponent = componentName
<div :is="currentComponent"></div>
. É onde você adicionaria o atributo.myComponent1
pegue acessórios emyComponent2
não pegue acessóriosRespostas:
Para passar props dinamicamente, você pode adicionar a
v-bind
diretiva ao seu componente dinâmico e passar um objeto contendo seus nomes e valores prop:Portanto, seu componente dinâmico seria assim:
E em sua instância Vue,
currentProperties
pode mudar com base no componente atual:Portanto, agora, quando o
currentComponent
formyComponent
, ele terá umafoo
propriedade igual a'bar'
. E quando não for, nenhuma propriedade será passada.fonte
<component>(here)</component>
. Isso é possível?<slot>
para cada componente que estiver renderizando dinamicamente. vuejs.org/v2/guide/components-slots.htmlVocê também pode fazer sem propriedade computada e embutir o objeto.
<div v-bind="{ id: someProp, 'other-attr': otherProp }"></div>
Mostrado na documentação do V-Bind - https://vuejs.org/v2/api/#v-bind
fonte
Você poderia construí-lo como ...
fonte
Se você importou seu código por meio de require
você também pode fazer referência ao componente por meio da propriedade de nome se seu componente o tiver atribuído
fonte