Я создал два компонента dynamic. Теперь, используя events: $emit/$on , что мне нужно будет уволить «logThat (someObj)» метод компонента-два, проходящей аргументы, как вы можете видеть в этом скрипку:Как создать крючок с событиями между компонентами VUE 2.0
Vue.component('component-one', {
template: '#template-a',
methods: {
onClick() {
const someObj = {
foo: "foo",
bar: "bar"
}
vm.$emit('selected', someObj)
vm.currentView ='component-two';
}
}
});
//Any hint??
/*vm.$on('selected', (someObj) => {
this.logThat(someObj)
})*/
Vue.component('component-two', {
template: '#template-b',
methods: {
onClick() {
vm.currentView ='component-one';
},
logThat(someObj) {
console.log(someObj);
}
}
});
https://jsfiddle.net/wanxe/yuh71e1o/
Если у кого есть какие-либо предложения о том, как справиться с этим, будет понятно :)
Во-первых, большое спасибо за то, что помогли мне лучше понять динамические компоненты. Как я вижу в вашем примере, когда огонь срабатывает второй в первый раз, он создается только экземпляром, но не запускается событие «selected». Однако во второй раз я получаю ожидаемый результат. Понятно, что мне нужно использовать статические компоненты и использовать v-show для переключения, как вы мне рассказываете. Но если у вас есть переменная «ShowMe», где я заявляю? В инстанцировании vue, в каждом из компонентов, оба? – jnieto
Если вы нажмете на третий или четвертый раз, вы увидите более интересные результаты в оригинальной скрипке - старый «компонент-два» никогда не будет уничтожен. Вместо этого он воссоздается каждый раз, что приводит к непредсказуемым результатам. Вот обновленная скрипка: https://jsfiddle.net/mani04/yuh71e1o/5/ - В этом я использовал 'v-show' для отображения/скрытия компонентов вместо динамического переключения между ними. Здесь вы найдете ожидаемые результаты. – Mani
Отличный !! Еще раз спасибо! – jnieto