@vuejs_ru

Страница 10 из 3900
Alexander
05.10.2016
12:13:09
Вернее, не вместо, а вдобавок, если нужно именно на правую кнопку особый функционал повесить, а не меню выключить вообще

Arthur ?
05.10.2016
12:13:13
тогда нажатие левой не будет ловить ведь?

предлагаете 2 хэнлдера на каждый элемент?

подумал что это не хорошо, делить логику

Google
Alexander
05.10.2016
12:13:46
Да, конечно.

Arthur ?
05.10.2016
12:13:47
потому что в зависимости от стейта кнопки разные действия происходят при разных нажатиях

Alexander
05.10.2016
12:13:58
Это не деление логики, это обработка разных событий

Arthur ?
05.10.2016
12:15:52
хорошо, я перепишу, спасибо

Евгений
06.10.2016
06:39:00
подскажите, как отслеживать любое изменение в data: cart[] и при изменении вызывать метод (запись в localstorage)?

watch: { cart: function(){... так?

Сашка
06.10.2016
06:40:10
this.$watch('cart', function(val){localStorage.setItem('cart', val)});

Евгений
06.10.2016
06:40:25
благодарен :)

версия 2.0 если что

Сашка
06.10.2016
06:40:57
Ну да, лучше через watch: {cart: ....

Евгений
06.10.2016
06:41:04
ага, спасибо

а как занести всё значение cart в localstorage?

как массив

Google
Сашка
06.10.2016
06:47:18
localStorage.setItem('cart', JSON.stringify(val))

Только в JSON

Евгений
06.10.2016
06:49:11
точно, благодарю)

туплю)

deleteFromCart: function(item) { for (var i = 0; i < this.cart.length; i++) { if (this.cart[i].id === item.id) { Vue.delete(this.cart, i); break; } } }, Такой метод, вешаю на кнопку удаления объекта из корзины, но чтото не удаляет

Eugene
06.10.2016
07:58:32
Сашка
06.10.2016
07:59:18
Но хз, не сталкивался

Object.keys([1,2,3,4]) //["0", "1", "2", "3"]

Евгений
06.10.2016
08:00:46
а блин

Евгений
06.10.2016
08:01:00
не, понял походу косяк, щас сделаю

Eugene
06.10.2016
08:02:48
ООо! Попробуй Vue.delete(this.cart, ''+i);
А в чем прикол? Кавычки, +i Я просто не в теме, объясни плз)

Сашка
06.10.2016
08:03:32
Вот тут вывод ключей объекта (массива). Ключи в формате строк выводятся, так что мало ли

Object.keys([1,2,3,4]) //["0", "1", "2", "3"]

Eugene
06.10.2016
08:03:41
Не, я не про это

Сашка
06.10.2016
08:03:42
''+i преобразует i в строку

Eugene
06.10.2016
08:03:47
А

Понял, спасибо

Сашка
06.10.2016
08:03:59
Неявное преобразование в js

Google
Eugene
06.10.2016
08:04:02
пустая строка + i

Просто стремно выглядит без пробелов)

Сашка
06.10.2016
08:04:55
5 + 4 = 9, 5 + '4' = 9, '5' + 4 = '54'

Сашка
06.10.2016
08:06:15
'5' - 4 = 1

Вот и разбирайся

Splice уже не модный?
Ву так далеко не смотрит

Не заметит изменений

Евгений
06.10.2016
08:06:49
сделал через Splice

Eugene
06.10.2016
08:06:53
Кстати, в доке написано, что второй аргумент в виде строки нужен

Сашка
06.10.2016
08:06:55
О_О

сделал через Splice
Оно работает?

Евгений
06.10.2016
08:07:07
да

Сашка
06.10.2016
08:07:11
О_О

Евгений
06.10.2016
08:07:20
for (var i = 0; i < this.cart.length; i++) { if (this.cart[i].id === item.id) { this.cart.splice(i,1) break; } }

Сашка
06.10.2016
08:07:42
В смысле изменение чекается сразу, все сразу перерендеривается?

Евгений
06.10.2016
08:07:48
да

Сашка
06.10.2016
08:08:20
Splice уже не модный?
Видимо все же модный

Теперь вот мне интересно, как они реактивность реализовали. Рекурсивно в глубину чтоли?

Евгений
06.10.2016
08:09:59
хз, я в этих реативностях не понимаю ничего)) и вообще в js

Google
Евгений
06.10.2016
08:10:13
просто надо тут корзину на сайт сделать, вот и мучаю vue

на фронте

Сашка
06.10.2016
08:10:59
"Vue cannot detect property addition or deletion." - из гайда по вую 2

Евгений
06.10.2016
08:11:52
что это значит для меня?)

Сашка
06.10.2016
08:21:26
По идее он не должен это детектить

Михаил
06.10.2016
09:06:18
Ну он не может отследить что-то вроде a.foo = 'fuck'; А стандартные методы массивов, push/splice/etc, вроде как, отслеживает.

Евгений
06.10.2016
09:52:17
а как повесить транзишн на удаление строки из v-for?

Admin
ERROR: S client not available

Евгений
06.10.2016
09:52:28
тj есть чтоб удалялось красивым схлопыванием

Andrey
06.10.2016
09:57:47
Есть же в доке много инфы http://vuejs.org/guide/transitions.html#List-Entering-Leaving-Transitions

Евгений
06.10.2016
10:09:02
блин, всё равно траблы какие то

у меня идет таблица, сначала идет thead, потом уже строки через v-for

если обернуть в транзишен груп с тегом div или p то от встраивается до всей таблицы

если всю таблицу обернуть то тогда сама таблица вообще не отрисовывается

сделал через тег tbody

Сашка
06.10.2016
10:27:52
обернуть именно строки нужно. <transition-group><tr v-for="...">...</tr></trans...

Евгений
06.10.2016
10:29:24
так и делаю

<transition-group name="list" tag="tbody"> <tr v-for="(item, index) in cart" :key="item" class="list-item">

и так далее

Google
Евгений
06.10.2016
10:30:03
только пока сама транзакция не сработала, еще бьюсь

<transition-group name="list" tag="tbody"> <tr v-for="(item, index) in cart" :key="item" class="list-item"> <td>Текст</td> </tr> </transition-group> И стили .list-enter-active, .list-leave-active { transition: all 1s; } .list-enter, .list-leave-active { opacity: 0; transform: translateX(30px); } Чnо я делаю не так?

кнопки удаления кстати находятся внутри v-for, просто тут их не показал

Сашка
06.10.2016
10:46:31
хз чет

Евгений
06.10.2016
10:51:11
ну так на первый взгляд не видно ошибок?

Сашка
06.10.2016
10:51:21
неа

Чет странное

Евгений
06.10.2016
10:51:40
запилю куда нибудь в jsfiddle может кто нить поковыряет тоже))

https://jsfiddle.net/t8pa5d7f/3/

может кто нибудь подскажет

Михаил
06.10.2016
11:12:24
С таблицей не работает. Поменял на дивы - все ок, с анимацией.

И, кстати, в функцию удаления лучше передавать index, а не item. И тогда она будет выглядеть так: deleteFromCart: function(index) { this.cart.splice(index,1); }

Andrey
06.10.2016
11:14:42
и :key="item.name" key - должен быть примитивом

Евгений
06.10.2016
11:21:33
понял, спасибы

жаль что с таблицей не работает :(

придется верстать дивами, может оно и к лучшему :)

флексбоксами например

ладно, это уже дело техники

Andrey
06.10.2016
11:25:30
с таблицей вприныппе transition: all 1s; не работает

Страница 10 из 3900