VueJS 2 - Как передать параметры с помощью $emit

Я работаю над модальным компонентом, используя VueJS 2. Сейчас он в основном работает, я нажимаю на кнопку и открывается модальный, и т. д.

теперь я хочу создать уникальное имя для модального и связать кнопку с этой конкретной кнопкой.

это то, что я имею в виду. Модальный имеет уникальное свойство name:

<modal name='myName'>CONTENT</modal>

и это будет ассоциированная кнопка:

<button @click="showModal('myName')"></button>

что мне нужно выяснить, как передать параметр showModal модальному компоненту.

вот метод, который я использую в корневом экземпляре vue (i.e, не внутри моего модального компонента):

methods: {
    showModal(name) { this.bus.$emit('showModal'); },
}

что я хочу сделать, это получить доступ к свойству name в компоненте - что-то вроде этого:

created() {
    this.bus.$on('showModal', () => alert(this.name));
}

но это отображается как undefined.

так что я делаю не так? Как получить доступ к свойству name внутри модального компонент?

Примечание: Если вам интересно, что это.автобус.$on is, пожалуйста, см. следующий ответ на предыдущий вопрос, который я задал:https://stackoverflow.com/a/42983494/7477670

1 ответов


передайте его как параметр в $emit.

methods: {
    showModal(name) { this.bus.$emit('showModal', name); },
}

created() {
    this.bus.$on('showModal', (name) => alert(name));
}

кроме того, если вы хотите дать модальному имя, вам нужно принять его в качестве опоры в модальном компоненте.

Vue.component("modal",{
    props:["name"],
    ...
})

тогда я предполагаю, что вы захотите сделать что-то вроде:

if (name == this.name)
    //show the modal