Igor
Чуваки, вы разбиваете стили/шаблон/js компонента на три фалйа или все в одном .vue делаете?)
Вообще все в одном файле - то что надо Тоже так пишу Но если начинается постоянный скролл и поиск куска кода, то есть смысл разбивать на отдельные файлы
Anonymous
А чё не стал?
Оказалась не нужна.
Anonymous
:D
Armen
Хех, ну ладн
Ruslan
какой объект клонировать? я делал 2 клона через Object.assign, но оно странно себя ведет - v-model работает на два объекта одновременно
Armen
Object.assign копирует только первый уровень
Anonymous
Дипклон из рамды юзайте
Anonymous
Из лодеша он не норм
Igor
Клонируй через JSON.parse(JSON.stringify(obj))
Anonymous
Anonymous
Кстати, вы тут за структуру компонентов говорили... логично ли структурировать както так? Альсо, всякую дамми дату я выношу в json. Это нормально?
Igor
Не всегда подходит
Ну если обьект чисто джейсон, то оч даже норм
Igor
А так да
Denys
В лодаше есть deepClone для объектов
Armen
О, ребята, знает кто какую-то легковесную либу для ajax запросов?
Anonymous
Из лодеша он не норм
Armen
Мне надо файлы через post слать
Armen
Больше ничего
Anonymous
Полифил ыетча и норм
Armen
Мне не надо столько функционала, сколько в аксиос
Armen
Прост не хчу на ваниле писать)
Armen
Ща фетч гляну
Denys
Fetch это ванила
Igor
Но прокачанная
Armen
Fetch это ванила
Знаю, я имел ввиду через xmlhttprequest
Anonymous
Не очень, скажем так.
А что именно? Структура? Json? Или именование?
Anonymous
Видел вариант, в котором все файлы относящиеся к компоненту именовались как и компонент. Я пока хз есть ли какие-то общепринятые стандарты в этом плане.
Anonymous
А что именно? Структура? Json? Или именование?
Структура, именования. Для компонентов, которые что-то делают, можно создать папку components и хранить их там. Компоненты-страницы - в папке views, стили - в папке со стилями и т.д. У компонентов не правильное именование. Это всё нужно для более удобной читаемости. Почитай стайл гайд.
Ruslan
спасибо, что надоумили ипользовать lodash. Я то думал Object.assign справиться
Anonymous
Рамда
Anonymous
Юзай рамду
Ruslan
так лодаш в проекте и работает))
Igor
Юзай рамду
Чем лоудаш плох?
Ruslan
не, знаю, может есть какие-то подводные камни
Ruslan
нужно будет разобраться в разнице рамды и лодаша, в любом случае спасибо
xxtux
Это как лопата и перфоратор
Bohdan
а что есть что?)
Anonymous
Я слышал в лоде залупа с дипклоном, что то недавно на слуху было
Melstone
Ребят помогите: есть data с вложенными объектами, например: data () { return { title: 'Cookie Баннер', fields: [ { when: this.$store.state.app.websiteSettings.isCookieBannerEnabled, type: 'description', text: "<p>Введите текст подтверждения, который вы хотите показывать своим посетителям.</p>" }, ... ] } } Изменяем в vuex store значение this.$store.state.app.websiteSettings.isCookieBannerEnabled, а оно не обновляет значение во вложенном json-объекте. Почему так происходит и как поступать в таких ситуациях?
Armen
Чтобы менялось надо computed делать
Melstone
понятно, минуту, сейчас демку сформирую
Melstone
Вот кусок кода: data () { return { title: 'Cookie Баннер', fields: [ { type: 'check', name: 'isCookieBannerEnabled', title: 'Включить Cookie Баннер', value: this.$store.state.app.websiteSettings.isCookieBannerEnabled }, { when: this.$store.state.app.websiteSettings.isCookieBannerEnabled, type: 'description', text: "<p>Введите текст подтверждения, который вы хотите показывать своим посетителям.</p>" }, { when: this.$store.state.app.websiteSettings.isCookieBannerEnabled, name: 'cookieBannerText', type: 'wysiwyg', placeolhder: 'Введите сообщение…', value: this.$store.state.app.websiteSettings.cookieBannerText }, ... ] } } нужно чтобы по изменению свойства value первого элемента массива изменялись свойства when у остальных элементов массива. Как в computed это примерно будет выглядеть?
Melstone
Как-то так? computed: { isCookieBannerEnabled: function() { for (var i = 0; i < this.fields.length; i++) { if (this.fields[i].name == 'isCookieBannerEnabled') { return this.fields[i].value; } } } }
Hedint
не совсем. у тебя тут this ссылается на локальную data
Melstone
И необходимо чтобы в data изначально свойство when было. А значения в computed насколько знаю после data присваиваются.
Melstone
Как правильнее тогда реализовать этот момент?
Hedint
https://vuex.vuejs.org/ru/state.html https://vuex.vuejs.org/ru/getters.html на самом деле всё это есть в доке vuex, почти самое начало. читай про геттеры и про mapState в твоем случае можно: 1. засунуть в computed полностью весь fields и работать с ним, как с локальным. ...mapState({fields: (state) => state.app.штота.fields}) это так себе вариант, но работать будет. 2. написать геттер в сторе isCookieBannerEnabled, в котором будет что-то вроде кода, который ты написал выше, а потом прокинуть его в локальный computed (это кажется более хорошим вариантом)
Melstone
Спасибо за развернутый ответ. Второй наверное получше.
Melstone
В Computed же нельзя данные изменять?
Hedint
нет
Hedint
если надо что-то в сторе поменять, меняют через мутации
Melstone
>а потом прокинуть его в локальный computed каким образом прокидывать? в двух словах
Hedint
import { mapGetters } from 'vuex' export default { // ... computed: { // примешиваем геттеры в вычисляемые свойства оператором расширения ...mapGetters([ 'isCookieBannerEnabled', ]) } }
Serge
В Computed можно присваивать, если сеттер написать
Melstone
понятно, сейчас попробую через vuex getters сделать
Serge
И можно еще watch ером было обойтись
Melstone
В общем геттер написал, он обновляется, но data не обновляется: data () { return { title: 'Cookie Баннер', fields: [ { type: 'check', name: 'isCookieBannerEnabled', title: 'Включить Cookie Баннер', value: this.$store.state.app.websiteSettings.isCookieBannerEnabled }, ... { when: this.$store.getters.isCookieBannerEnabled, type: 'description', text: "<p>Требования к файлам cookie различаются. Наш текст по умолчанию является образцом; вы не должны предполагать, что он полностью удовлетворяет вашим конкретным требованиям законодательства. Photosquare не может предоставить вам юридическую консультацию, в том числе по содержанию вашего текста подтверждения, конфиденциальности или политике файлов cookie.</p>" }, ] } },
Serge
Бррр. Присваивание data происходит только при инициализации. Какая разница что справа в выражении ? Геттер или переменная....
Anonymous
https://vuejs.org/v2/style-guide/
Camel + snake case? И это считается good? Эм...
Armen
Camel + snake case? И это считается good? Эм...
Для миксинов вполне, чтобы не было коллизий
Armen
Я так считаю
Melstone
только через this.data.fields[index].when = true/false ?
Dmitriy
Camel + snake case? И это считается good? Эм...
Там же пояснение дали, почему так