Иван
Не должно быть такого
Иван
Это кто выдает?
Alexey
webpack
Artur
@alex_sokolov а сразу же в инпуте можно фильтр применить ( который глобально установлен), при вводе телефона?
Иван
Вью корректно обрабатывает множественные атрибуты, мерджит классы
Alexey
Artur
@mr_alexej можно еще вот так :class="[addCLass, addClass2]"
Alexey
@mr_alexej можно еще вот так :class="[addCLass, addClass2]"
у меня так и было) Там надо в зависимости от значений назначать класс, использовал тернарные операторы. Странно.
Artur
@alex_sokolov вот как раз в биндингах и не получается при глобальном фильтре с инпутом, чтобы в нем сразу рендерилось что вводишь.
Alex
Ошибки в консоли?
Artur
@alex_sokolov `[Vue warn]: Property or method "formatPhone" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property. See: https://vuejs.org/v2/guide/reactivity.html#Declaring-Reactive-Properties.`
Иван
Ты код закешь
Artur
все что мне консоль пишет
Alex
Фильтр глобально как подключаете? Пример сделайте
Artur
Vue.filter('formatPhone', (formatPhone) => { if (!formatPhone) { return ''; } return formatPhone.replace(/[^0-9]/g, '').replace(/(\d{1})(\d{3})(\d{3})(\d{2})(\d{2})/, '$1 ($2) $3-$4-$5'); }); —--------------- in html <input name="phone" type="text" v-model="phone | formatPhone">
Artur
либо если v-bind использовать вообще ошибку выдает, а внутри фигурных скобках все работает
Artur
только мне нужно имено в инпуте
Иван
А версию вью какая?
Иван
Ну в v-model оно и не может работать
Artur
@amareis v2.5.15
Artur
видно по примерам в доках что вроде как убрали, вот только как теперь использовать не понял
Иван
:value="phone | formatPhone"
Иван
@input="phone = formatPhone($event.target.value)"
Иван
Но вот насчет такого вызова фильтра я не уверен ваще ни разу
Artur
- :value="phone | formatPhone" conflicts with v-model on the same element because the latter already expands to a value binding internally
Иван
v-model убери
Alexey
@alex_sokolov @amareis спасибо, парни.
Artur
@amareis @alex_sokolov спасибо за ответы, поиграюсь, поизучаю еще, пока не получается))
Иван
То что я написал с :value и @input это и есть прямая замена v-model
Artur
Я убрал пока просто не сработало
Иван
Два варианта
Иван
Либо навешиваешь внешний класс, у которого есть > input {text-align: center} (что не оч хорошо, потому что предполагает знание внутреннего устройства компонента
Иван
Либо добавляешь пропс center или типа того
Иван
Лучше идти вторым путем, конечно
Anonymous
А как насчёт использования slot и slot-scope? Или это уже извращения?)
Иван
А зачем?
Иван
Это обычно когда контент менять надо
Artur
@amareis спасибо, сработало @input="phone = $event.target.value" :value="phone | formatPhone"
Иван
Исчоп
Artur
выглядит дико конечно)
Иван
По которому можно отследить все случаи, когда мне говорили "спасибо, сработало"
Иван
выглядит дико конечно)
Нет, именно в такую штуку и раскрывается v-model
Artur
v-model было бы красивее)
Иван
Ну да, но оно с фильтрами не умеет работать
Иван
Можно сделать кастомную директиву, которая такое обрабатывает
Alexandr
аля v-model.someFilter?
Иван
@HawkeyePierce89 Компонент обычно должен зависеть от своих пропсов
Artur
@amareis да это хорошая идея директиву сделать
Иван
В реакте есть еще контекст для подобных штук, но он кагбэ для более глобальных вещей
Иван
В твоем случае это точно должен быть пропс
Иван
аля v-model.someFilter?
Ну или v-filter-model скорее
Alexandr
да-да
Alexandr
точно
Иван
Вообще, можно попробовать тикет во вью закинуть. Или там наоборот выпилили фильтры из моделей?
Artur
раньше через v-model работало
Иван
Хотя кстати v-model.withFilter был бы удобней, конечно
Andrey
в aurelia.js есть двусторонние фильтры, где описывается фильтр для вывода и фильтр для установки значения
Иван
Ну для v-model это не имеет особого смысла
Andrey
почему нет?
Иван
Хотя нет, имеет так-то
Andrey
хоть trim тот же самый делать или к определённому формату приводить
Artur
@RemRyahirev это тоже было и вроде как работает, не пробовал сейчас https://vuejs.org/v2/guide/migration.html#Two-Way-Filters-replaced
Timur
Коллеги, привет! Есть 2 компонента. Первый - общая таблица, где в определенной ячейке используется второй компонент через другой компонент. Второй компонент с первым связан через несколько компонентов (второй примерно предок 4-5го уровня). Вторых компонентов используется столько , сколько строчек в таблице (порядка 100). Нужно из родителя передать данные в дочерний компонент. Как вариант такой this.$bus.$emit('row_'+row.id, data), а в дочернем соответсвенно this.$bus.$on('row_'+row.id,function(){..})? не будет ли много брать памяти и ресурсов эта прослушка событий? Т.е. порядка 100 прослушивателей будет.
Sunlive
используется второй компонент через другой компонент.
Timur
используется второй компонент через другой компонент.
вот это имел ввиду Второй компонент с первым связан через несколько компонентов (второй примерно предок 4-5го уровня).
Bohdan
господа а не подскажите, как на Vue можно вычитывать переменные с файла .env ?
Alexey
господа а не подскажите, как на Vue можно вычитывать переменные с файла .env ?
😂 ну и вопрос. Хоть бы уточнял, что это ларавел, не все же могут знать. А вообще, если только рендерить вью на сервере разве что, тогда как-то и можно. Но вообще лучше значения передавать в шаблон и там через ванильный js читать
Bohdan
да как угодно, можешь в window пихать
как угодно не надо, надо как правильно
Александр
Если нужна реактивность, то только стор адекватный вариант
Александр
Ну если спа, то ещё в руте можно хранить
Alexey
как угодно не надо, надо как правильно
Ну vuex явно не для хранения глобальных переменных. https://stackoverflow.com/questions/37367588/what-is-the-best-way-to-declare-global-variable-in-vue-js
Andriy
бь 4р