Anonymous
лол. все ясно.
Nikolay
лол. все ясно.
ну если у тебя словарный запас ограниченный, что я могу поделать
Anonymous
по твоему вопросу виден твой уровень. все кто в теме оценили, можешь не выебываться уже
Nikolay
пфф :D
Yushkevich
да чего-то тяжело идет. Я вроде понял как на jsfiddle выложить, сейчас пробую
Stanislav
да чего-то тяжело идет. Я вроде понял как на jsfiddle выложить, сейчас пробую
Можешь еще тут попробовать, если тяжело идет https://codesandbox.io/s/vue
Yushkevich
да у меня 2 компонента. и все в одном файле
Yushkevich
сейчас переделываю их на Vue.component
Yushkevich
https://jsfiddle.net/toum6nLb/1/
Yushkevich
почти сделал, но пока не запускается. Сейчас пробую примонтировать. Думаю, минут 5 и домучаю уже
Yaroslav 🇺🇦
<basket-product :product="product" @remove="removeProduct" > </basket-product>
Yaroslav 🇺🇦
this.$emit('remove', this.product.ID);
Yaroslav 🇺🇦
В методе removeProduct тебе нужно найти индекс по id что придет и уже тогда слайснуть
Stanislav
В BasketProduct.deleteItem нужно передавать индекс удаляемого продукта
Yushkevich
this.$emit('remove', this.index); - а вот тут я его не передаю?
Yushkevich
или вот тут?
Yushkevich
@remove="removeProduct(index)"
Stanislav
Ну и key в v-for добавить не забудь
Yushkevich
я пробовал оставлять @remove="removeProduct"
Yushkevich
я сюда код перенес
Yushkevich
https://jsfiddle.net/toum6nLb/7/
Yaroslav 🇺🇦
у тебя нет this.index
Yushkevich
просто не запускается
Stanislav
И не должно быть
Yushkevich
как лучше - из parent компонента в v-for (item, index) забрать index?
Yushkevich
или через emit наверх передавать?
Yushkevich
если я правильно понимаю, то мне из emit ничего не нужно отдавать
Yaroslav 🇺🇦
так как я написал выше
Yushkevich
и вот тут достаточно <div v-for="(product, index) in products"> <basket-product :product="product" @remove="removeProduct(index)" > </basket-product> </div>
Stanislav
просто не запускается
>var vm = Vue({ new забыл
Yushkevich
и в методе
Yushkevich
removeProduct(index) { console.log(index); this.products.splice(index, 1); }
Yaroslav 🇺🇦
передать id, по нему найти в продуктах и уже удалить
Yushkevich
Yushkevich
завелось
Yushkevich
и там работает
Yushkevich
уф
Yushkevich
а вот локально не удаляет. В консоль выводит index
Stanislav
спасибо!
Консольку открывай, там все пишется 🙂
Yushkevich
осталось понять, почему у меня не работает :)
Yushkevich
если на jsfiddle работает :)
Yushkevich
и ошибок не отдает
Stanislav
осталось понять, почему у меня не работает :)
Тебе в идеале, в твои данные products: [ { NAME: 'Товар 1' }, { NAME: 'Товар 2' }, { NAME: 'Товар 3' }, ], нужно добавить уникальное поле id у каждого продукта. Там будет проще Vue отследить изменения при использовании key
Yushkevich
у меня они есть
Stanislav
ну вот добавь и обнови гист
Yushkevich
я пытаюсь понять, почему у меня локально код не отрабатывает
Stanislav
>required: false Это не обязательно писать для пропсов. Оно и так по умолчанию false
Yushkevich
http://take.ms/M9l0P
Yushkevich
http://take.ms/XaUy8
Yushkevich
Сейчас из офиса до дома доеду, еще попробую
Yushkevich
то есть у меня индекс есть, И в коде removeProduct(index) { console.log(index); this.products.splice(index, 1); }
Yushkevich
консоль лог отрабатывает, а сплайс нет. Все строчки на месте
Stanislav
Так, падажи... А че у тебя там splice на пропсе
Stanislav
Получается, ты по ссылке выпиливаешь элемент в стейте родителького компонента
Stanislav
низя так делать
Yushkevich
Так, а как надо?
Yushkevich
Я могу флоу написать
Yushkevich
Чтобы понятнее было
Stanislav
Данные о продуктах ты где получаешь?
Stanislav
Как называется этот компонент?
Yushkevich
У меня есть некоторый шаблон html
Yushkevich
Там в переменной уже есть данные
Yushkevich
Их я отдаю в cart
Yushkevich
Через :products
Yushkevich
Внутри cart я вывожу список продуктов через v-for
Yushkevich
И отдаю данные конкретного продукта в компонент basket-product
Stanislav
Отдаешь в cart из коренного компонента (new Vue) ?
Yushkevich
В нем у меня кнопка "удалит"
Yushkevich
Угу
Yaroslav 🇺🇦
пропсы вниз, соытия вверх, собственно из карт тебе нужно вызвать событие где данные лежат на удаление
Yushkevich
Вот пропсы вниз я и подкидываю
Yushkevich
У меня корневой далеко в других файлах. Получается там нужно писать?
Yushkevich
Условно, в корневом файле app.js я определяю компоненты и корневой vue
Yushkevich
А дальше уже в отдельных компонентах у меня планировался красивый и разделённый код
Stanislav
У тебя laravel или че там?
Yushkevich
Там вообще битрикс ))
Stanislav
Не суть