@vuejs_ru

Страница 1948 из 3900
DimenSi
27.01.2018
13:48:58
э, легче тогда преобразовать this.errors в обьект, и создать отдельное свойство hasErrors = true

обьект заполняешь нужными ошибками с нужным ключом, а если вообще есть ошибки ставишь true у hasErrors

тогда у всей формы будет класс error и у каждой группы будет своя ошибка

либо же не использовать hasErros,а использовать Object.keys(), чтоб узнать количество ключей в обьекте

Google
DimenSi
27.01.2018
13:52:28
только я тебе сразу предупрежу, чтоб не потерять реактивность, сначала заполни обьект, а потом его уже присваивай в this.errors

Alexander
27.01.2018
13:52:29
hasErros() { return Object.values(this.errors).some(err => Boolean(err)) }

DimenSi
27.01.2018
13:52:54
он перед началом собирания ошибок очищает this.errors

DimenSi
27.01.2018
13:53:51
да и вообще какой смысл в обьекте ошибок проверять булево, если этот обьект 100% содержит ошибки

Alexander
27.01.2018
13:54:53
да и вообще какой смысл в обьекте ошибок проверять булево, если этот обьект 100% содержит ошибки
от реализации его зависит, может у него ключ есть, а value равен undefined

пускай сначала напишет реализацию в общем

DimenSi
27.01.2018
13:56:08
судя по всему идея в том, чтоб наполнять обьект/массив ошибками, а потом выводить их всех сразу под формой, но нужные поля подсвечивать красным, если в обьекте/массиве ошибок есть нужные ошибки.

Andy
27.01.2018
13:57:26
именно так!

DimenSi
27.01.2018
14:01:31
я когда только начал работать с формами и вообще начал работать с vue, заморочился так, что сделал функцию в которую я прокидывал мапу в которой содержалось названия поля и название ошибки, типо { nameField: 'errors.fields.nameField' } // как-то так, прокидывал в эту функцию ответ сервера и эту мапу и потом функция сама находила нужное поле и подсвечивало с помощью нативной валидации setCustomValidate()

и типо еще можно было кинуть 3 обьект с переводами ошибок, чтоб сделать ошибки более человекопонятными

больше я такой херней не страдаю.

Google
Andy
27.01.2018
14:04:40
кажись понял

.catch(error => { console.log(error.response.data); this.errors = []; if (error.response.data.errors.title) { this.errors.push(error.response.data.errors.title[0]); } if (error.response.data.errors.intro) { this.errors.push(error.response.data.errors.intro[0]); } });

в консоль попадает array с ключами, а вот дальше this.errors заполняется уже без ключей

Alexander
27.01.2018
14:05:52
?

DimenSi
27.01.2018
14:06:16
что-то я не этого от тебя ожидал, я думал, ты уже все написал

array с ключами это уже мапа/обьект

Andy
27.01.2018
14:07:05
ребята, я с vue третий день(

DimenSi
27.01.2018
14:07:20
ну что поделать, не путай хотя бы названия

{ key: value } // object, [val, val] // array

Andy
27.01.2018
14:56:24
кажется сделал какой-то дебилизм реально( но работает.... вообщем, в data добавил validator: '', далее в методах hasError(field) { if (this.validator.errors) { var v = this.validator.errors; JSON.parse(JSON.stringify(v)); return { error: v[field] } } }, потом в axios поменял на .catch(error => { //console.log(error.response.data); this.errors = []; if (error.response.data.errors) { if (error.response.data.errors.title) { this.errors.push(error.response.data.errors.title[0]); } if (error.response.data.errors.intro) { this.errors.push(error.response.data.errors.intro[0]); } } this.validator = error.response.data; }); ну и в самой форме каждой группе инпутов поставил это <div class="formGroup" :class="hasError('intro')">

?
27.01.2018
14:56:48
Бадибэг

Andy
27.01.2018
14:58:39


Oleksandr
27.01.2018
14:58:52
Здравствуйте, хочу сделать проект на Vue + Laravel. Лару уже знаю, как посоветуете учить Vue? Ресурсы может какие, или же обычная дока?

Andy
27.01.2018
14:59:21
@eddimensi @agontarev спасибо вам)

Здравствуйте, хочу сделать проект на Vue + Laravel. Лару уже знаю, как посоветуете учить Vue? Ресурсы может какие, или же обычная дока?
привет, сэйм стори) тоже с лары и вот третий день копаю vue. пока что оф документацию смотрю + на medium.com много чего есть

Alexander
27.01.2018
15:03:53
https://www.youtube.com/watch?v=ZEYFrY5ztnE

Google
Andy
27.01.2018
15:46:05
просто отображает список ошибок

DimenSi
27.01.2018
15:46:23
Почему ты свои ошибки тупо не запишешь в объект?

V-for если что и по объекту пройти может.

В пхп ассоциативный массив это объект в js

Andy
27.01.2018
15:51:00
у меня php отдает json

DimenSi
27.01.2018
15:51:24
у меня php отдает json
К чему ты это говоришь?

Andy
27.01.2018
15:54:10
ну вот при валидации php идет response()->json, axios ловит ошибки .catch(error => { ---> error.response.data.errors . вот из этого нужно было сделать вывод каждой ошибки в отдельном div + подсветить каждый ошибочный инпут = пришлось добавить hasError(field) { if (this.validator.errors) { var v = this.validator.errors; JSON.parse(JSON.stringify(v)); return { error: v[field] } } }

Сергей
27.01.2018
15:54:20
Привет всем, парни, помоги разобраться, а то я завис что-то не перерендеривается сомпонент, дата у меня меняется http://joxi.ru/V2VvoyDhxQzl42 а в шаблоне http://joxi.ru/krDkoVLTEloV7A изменения происходят только после первого set'a в дату, уже второе изменение даты в шаблоне не отображается В чём может быть причина? данные меняю this.$set

DimenSi
27.01.2018
15:58:13
Что именно у тебя не получилось?

Alexander
27.01.2018
15:58:17
все это можно написать гораздо меньшим количеством кода

90% кода не нужно вообще

DimenSi
27.01.2018
15:59:05
все это можно написать гораздо меньшим количеством кода
Покажи ему, а то я на телефоне, а у меня бомбит от этого говнокода

Alexander
27.01.2018
15:59:26
Покажи ему, а то я на телефоне, а у меня бомбит от этого говнокода
неее, сории, я НЕ хочу вообще в это залезать :D

@mercuryskies давай разберайся и пиши нормально

DimenSi
27.01.2018
16:02:17
неее, сории, я НЕ хочу вообще в это залезать :D
Лан, я с самого начала на тебя не рассчитывал

Andy
27.01.2018
16:04:20
блин ну вот что плохого?) https://paste.ofcode.org/WVpSdnfECymiEZUSjte8Ld

пожалуйста, не баньте)

Google
Alexander
27.01.2018
16:06:24
1) чтобы перебрать ошибки, тебе не надо использовать массив, можешь использовать тот объект который тебе приходит с АПИ

this.errors = error.response.data.errors <li v-for="error in errors">{{ error }}</li> тогда это можно будет заменить на <template v-for="errorsField in errors"> <li v-for="error in errorsField">{{ error }}</li> </template>

я предполагаю примерно так должно заработать

два for, потому что мы перебираться объект с массивом ошибок, а потом сам массив ошибок

https://codesandbox.io/s/1o90oz4r97

DimenSi
27.01.2018
16:13:54
блин ну вот что плохого?) https://paste.ofcode.org/WVpSdnfECymiEZUSjte8Ld
1. Ты собираешь ошибки через вложенных if, тебе должны были по рукам бить еще в пхп за такое. 2. Мы можешь сделать this.errors обьектом, в него через цикл заполнять данными. 3. Вообще не понятно, зачем ты делаешь копирование обьекта и никак это не используешь.

Andy
27.01.2018
16:15:05
тысяча сайтов на modx и jquery и все знания досвидания. почти с нуля начинаю с laravel & vue)

DimenSi
27.01.2018
16:15:30
4. Ты дублируешь код и вообще this.errors используешь тупо как счетчик...

еще твой код стайл, походу это отвратительная хрень из пхп к тебе пришла

Andy
27.01.2018
16:17:08
это то все понятно, перебор всех ошибок можно по-разному сделать. вопрос то был изначально в подсветке каждого инпута поотдельности

Alexander
27.01.2018
16:17:25
@mercuryskies посмотри последнюю ссылку которую я скинул, там рабочий цикл

Stanislav
27.01.2018
16:17:26
В чем проблема?

Alexander
27.01.2018
16:18:01
В чем проблема?
чувак в js слабоват

Someone
27.01.2018
16:18:14
Коллеги, есть приложуха на Vue+Vuex+Vue-material. Она рендерит список. У каждого элемента списка есть кнопка, она должна открывать диалог, одинаковый для всех элементов списка (сейчас состояние диалога "открыт-закрыт" хранится в Vuex и это правильно). В диалоге выбирается дата. После выбора даты диалог должен закрыться, а тот экземпляр компонента, который вызвал открытие диалога, должен узнать о том, что выбор даты сделан. Вариантов вагон, но мне в голову лезут какие-то кривые пути, как это сделать идеологически правильно?

Andy
27.01.2018
16:19:32
@mercuryskies посмотри последнюю ссылку которую я скинул, там рабочий цикл
но часть отвечающая за :class="hasError('title')" более или менее норм?

Stanislav
27.01.2018
16:19:32
Наверное, неожиданный вопрос :)

Google
Someone
27.01.2018
16:19:51
А зачем тут Vuex?
Он не конкретно тут, я описываю один из кусков, оно на самом деле большое и страшное, и Vuex там точно нужен

Andy
27.01.2018
16:20:08
@mercuryskies посмотри последнюю ссылку которую я скинул, там рабочий цикл
просто я тот код с урока выдернул и не вникнув из него попытался что-то рабочее сделать. придется под себя переписать всё

DimenSi
27.01.2018
16:21:19
@mercuryskies https://paste.ofcode.org/QtaXEY6JwdGLEf64MTKqYs

я тебе так предлагал

Alexander
27.01.2018
16:23:03
но часть отвечающая за :class="hasError('title')" более или менее норм?
да и вообще применяй именование правильно, если это глагол has, то это должна быть функция которая вернет булевое значение, если ты хочешь, чтобы функция вернула объект, то это уже что-то типа getClasses должно быть, с глаголом get

Andy
27.01.2018
16:46:22
@agontarev @eddimensi теперь вот так) https://paste.ofcode.org/eQVMARkp9aVyQw9hynwTyJ

только из-за this.errors = null; в create чутка прыгает все

DimenSi
27.01.2018
16:48:10
Я предпочитаю таким образом обновлять, ты можешь просто = {}

Stanislav
27.01.2018
16:49:41
@agontarev @eddimensi теперь вот так) https://paste.ofcode.org/eQVMARkp9aVyQw9hynwTyJ
А почему this.loading = false в mounted, когда запрос в created?

Andy
27.01.2018
16:50:17
а это отголоски другого компонента, не принимайте во внимание

Alexander
27.01.2018
16:50:44
почему у тебя инпуты есть, а тега form нет, и запрос по клику, а не по сабмиту?!

Andy
27.01.2018
16:51:33
т.к. присутствует еще одна форма для загрузки изображения, форму внутри формы вроде нельзя ставить

Alexander
27.01.2018
16:51:58
нельзя, но и писать вот такие формы тоже нельзя

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