hydra_13
@hydra_13
Пограммист - любитель)

Как созданным записям при помощи v-for добавить интерактивность (а именно при нажатии кнопки мыши вызов функции)?

Собственно вопрос в заглавии.
Пытаюсь прикрутить интерактивность для клавиши удаления и корзины в учебном проекте.
Vue.js только начал осваивать.

Вот часть html:
<div class="basket">
     <div class="basket-goods-list">
            <basket v-for="item in goodsListItems" v-bind:item="item" v-bind:key="item.name">
            </basket>
     </div>
</div>


а вот и код из js:
Vue.component('basket', {
    props: ['item'],
    template: `
    <div class="basket-goods-list_item">
        <span class="basket-goods-list_item-txt">
            {{item.name}}: цена: {{item.price}}; кол-во: {{item.count}}
        </span>
        <div class="basket-goods-list_item-del-btn" 
            @click="removeFromBasket">
            Удалить
        </div>
    </div>`
})

let basketElement = new Vue({
    el: '.basket',
    data: {
        goodsListItems: basket.goodList
    },
    methods: {
        removeFromBasket() {
            console.log('remove')
        }
    }
})


В результате вижу в браузере:
5ca4b081114e3428888995.png

Но вот что в консоли браузера:
5ca4b098195b6645659140.png
и кнопки не работают (в принципе понятно почему из консоли)

Повторю вопрос: Как созданным записям при помощи v-for добавить интерактивность (а именно при нажатии кнопки мыши вызов функции)?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
0xD34F
@0xD34F Куратор тега Vue.js
В дочернем компоненте обрабатываете клик по кнопке удаления так: @click="$emit('remove')".

А в родительском компоненте подписываетесь на это событие: @remove="removeFromBasket(item)".
Ответ написан
yarkov
@yarkov Куратор тега Vue.js
Помог ответ? Отметь решением.
Метод removeFromBasket объявлен в корневом Vue инстансе, а обработчик @click="removeFromBasket" в компоненте. Вы чего еще ждали?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы