прослушивание события, испускаемого компонентом из программного маршрута в Vue.JS
У меня есть компонент, который выдает события, которые я могу успешно слушать:
<email-widget
v-bind:company-id="clicked_company_id"
v-bind:project-id="clicked_project_id"
v-on:project-clicked="onClickProjectId"
>
</email-widget>
Теперь я обновляю свою систему для использования маршрутизаторов, и у меня есть программный маршрутизатор, который выглядит следующим образом:
let emailComponent= Vue.component('email-widget')
const routes = [
{ path: '/settings', component: Bar },
{
path: '/emails',
name: 'emails',
component: emailComponent
},
]
router.push({ name: 'emails',
params: {}
})
Это делает правильно.
Но как я могу добавить слушателя для события?
Новинки:
Это решение работает:
<router-view
:company-id="clicked_company_id"
:project-id="clicked_project_id"
@project-clicked="onClickProjectId">
</router-view>
Однако весь смысл представления маршрутизатора заключается в переключении того, какой компонент находится внутри него. Если второй компонент project-clicked
, а не к представлению emailComponent
.








Ответы - прослушивание события, испускаемого компонентом из программного маршрута в Vue.JS / listen to event emitted by component from a programatic route in Vue.js



router-view
, то одно и то же событие(ы) должно всплывать и запускать и прослушивать. Дайте нам знать, что вы пытаетесь достичь конкретно, хотя.






16.09.2019 10:58:32
Я не думаю, что тебе стоит это делать. Вместо этого вы должны передать функцию onClickProjectId
как prop, и вместо того, чтобы испускать событие, вы должны вызвать эту функцию.
:onClick = "onClickProjectId"
Таким образом, у вас будет больше контроля над тем, что этот компонент делает внутри самого компонента.
В противном случае вы можете идти вперед с тем, что Йом с предложил выше.
