v-on: нажмите не работает загрузчик - PullRequest
0 голосов
/ 09 мая 2018

Изначально я думал, что это проблема с тем, как я использовал директиву @click в соответствии с этим вопросом . Я добавил .native в директиву, и мой метод все еще не вызывается.

Я знаю, что это бутстрап, как будто я использую обычный <button>, тогда метод вызывается, как и ожидалось.

В логах нет ошибок, так что все равно, что элемент не регистрирует директиву?

UpcomingBirthdays.vue

<template>
    <div>
        <h1>{{ section_title }}</h1>
        <b-card style="max-width: 20rem;"
                v-for="birthday in birthdays.birthdays"
                :key="birthday.name"
                :title="birthday.name"
                :sub-title="birthday.birthday">
            <b-button href="#"
                    @click.native="toWatch(birthday, $event)"
                    variant="primary">Watch
            </b-button>
        </b-card>
    </div>
</template>

<script>
    import { mapState } from "vuex";

    export default {
        name: "UpcomingBirthdays",
        data: () => {
            return {
                section_title: "Upcoming Birthdays",
            };
        },
        methods: {
            toWatch: (birthday, event) => {
                event.preventDefault();
                console.log("watched called");
                console.log(birthday.name);
                console.log(`BEFORE: ${birthday.watch}`);
                birthday.watch = !birthday.watch;
                console.log(`AFTER: ${birthday.watch}`);
            }
        },
        computed: mapState([
            "birthdays",
        ]),
    };
</script>

<style>
</style>

EDIT

Стоит отметить, что при использовании HTML5 <button> мне не нужно добавлять свойство .native к директиве @click.

РЕДАКТИРОВАТЬ 2

Вот мои коды и коробка Я создал, чтобы повторить эту ошибку. Я ожидаю, что здесь появится сообщение о том, что BirthdaysApi не определено, но я ничего не получаю при нажатии кнопки.

1 Ответ

0 голосов
/ 09 мая 2018

Просто удалите href="#" из ваших кнопок (это делает компонент Bootstrap b-button визуализирующим ваши кнопки как якоря), и он работает как положено:

https://codesandbox.io/s/w0yj3vwll7

Edit:

Очевидно, что это преднамеренное поведение авторов, с которым я не согласен. То, что они делают, по-видимому, выполняет event.stopImmediatePropagation(), поэтому любой дополнительный слушатель не запускается.

https://github.com/bootstrap-vue/bootstrap-vue/issues/1146

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...