Павел
😂
Николай
так все таки, что посоветуете?
Николай
где поискать
Anonymous
Поищи где-нибудь тут https://angular.io/
Demetrio
Vadim
Php.net
MaybeLocal
Что значит проект по вёрстке?
MaybeLocal
Учат как верстать?
MaybeLocal
Или шаблон ?
MaybeLocal
Или что?
Николай
Нужно сверстать сайт. Вот такой проект
Roman
Павел
Roman
Есть еще одна проблемка, но хз как ее понятно описать, в общем попробую ее решить, но думаю, что без вашей помощи не получится обойтись
MaybeLocal
Ну сверстай Авито
Павел
Vladislav
Павел
Vadim
MaybeLocal
Roman
Да, я ее читал, и видеоуроки смотрел, но то что мне нужно я не нашел
Roman
В общем сейчас сформулирую проблему
Roman
Допустим, в тодо лист есть две группы, в каждой из этих групп есть свои таски. Группы и таски рендерятся с помощью v-for. Мне нужно, что бы при клике на какой-либо тас, к нему применялся определенный стиль (это нужно для операции drag and drop). Я добавил к блоку с таском <div v-bind:class="{ active: isActive }"> </div> и по клику на обьект on:mousedown отслеживал id таски на которую был совершен клик. Изначально isActive = false, но на таске где был совершен клик оно isActive = true. Это все сработало, но проблема в том, что в каждой группе тасков, id тасков начинаются с 0, и соответственно пересекаются, поэтому isActive = true становится для всех тасков с одинаковым id. Как решить эту проблему?
Alexey
Допустим, в тодо лист есть две группы, в каждой из этих групп есть свои таски. Группы и таски рендерятся с помощью v-for. Мне нужно, что бы при клике на какой-либо тас, к нему применялся определенный стиль (это нужно для операции drag and drop). Я добавил к блоку с таском <div v-bind:class="{ active: isActive }"> </div> и по клику на обьект on:mousedown отслеживал id таски на которую был совершен клик. Изначально isActive = false, но на таске где был совершен клик оно isActive = true. Это все сработало, но проблема в том, что в каждой группе тасков, id тасков начинаются с 0, и соответственно пересекаются, поэтому isActive = true становится для всех тасков с одинаковым id. Как решить эту проблему?
Таски это массив объектов. Так? Добавь каждому объекту свойство active и ставь его в тру когда нажато. При этом надо таск сделать компонентой
Roman
Да, а это хорошая идея)
Roman
Спасибо, сегодня вечером попробую так сделать
Roman
таски сейчас - это массив объектов, который находится в массиве объектов
Roman
Наверное так лучше не делать?
Roman
new Vue({
el: '#app',
data: {
groups: [{title: 'Group 1', items: [{title: 'First Task'}, {title: 'Second Task'}]}, {title: 'Group 2', items: [{title: 'Third Task'}, {title: 'Fourth Task'}]}]
}
Alexey
Alexey
Допустим, в тодо лист есть две группы, в каждой из этих групп есть свои таски. Группы и таски рендерятся с помощью v-for. Мне нужно, что бы при клике на какой-либо тас, к нему применялся определенный стиль (это нужно для операции drag and drop). Я добавил к блоку с таском <div v-bind:class="{ active: isActive }"> </div> и по клику на обьект on:mousedown отслеживал id таски на которую был совершен клик. Изначально isActive = false, но на таске где был совершен клик оно isActive = true. Это все сработало, но проблема в том, что в каждой группе тасков, id тасков начинаются с 0, и соответственно пересекаются, поэтому isActive = true становится для всех тасков с одинаковым id. Как решить эту проблему?
а ещё подумай, что будет, когда нажмёшь на другой таск. Тебе же наверно надо с текущего активного убрать класс (сделать его неактивным)? Или там будет мультиселект?
Roman
Нет, там единичный выбор нужен.
Roman
А к нажатому таску нужно применить стиль, что бы можно было сделать анимацию
Roman
Дрег анд дроп я уже реализовал, таски перемещаются внутри группы, и между группами, но нужно еще сделать анимацию перетаскивания таска, т.е. при зажатой кнопке, что бы таск вырывался со своего места
Roman
и следовал за мышкой
Roman
Т.е. я думаю скрывать таск при зажатой мышке, и подменять его на другой таск с position: absolute
Roman
С тем же самым содержимым
Serge
Есть два роутервью: <router-view> и <router-view name="second">
роутинг прописан, как root/foo/:fooid/bar/:barid
где foo/:fooid это дефолтный роутервью, а root/bar/:barid это который name="second"
всё работает, но при переходе из root/foo/:fooid в root/foo/:fooid/bar/:barid компонент отрисовывающий foo/:fooid пересоздаётся. дальше при смене :barid всё работает как надо и не пересоздаётся.
Как победить пересоздание foo/:fooid ?
Serge
Anonymous
ребята, кто-то юзал Vue Sweet Modal? Трудности с добавлением callback при закрытии окна
Алексей
ещё не поздно отказаться от этого плагина? Попробуй Vue-SweetAlert
Anonymous
поздно -_-
Александр
А как сделать, чтобы slot возвращал текст, а не html?
Vladislav
Как сделать чтобы mix-blend-mode выдавал белый цвет с черного?
Vladislav
на фоне картинки
Roman
Вы как подходите к вопросу интернационализации SPA приложения, т.е. простыми словами переводу текстов GUI?
мне в голову приходят два варианта,
первый: key -> translation, определять тексты как label'ы аля "FIRST_PAGE_TITLE" в определённых пространствах имён и предоставлять к map'у ключей для каждого языка переводы в JSON файликах
вротой: более сложный но довольно интересный:
отсканировать исходники SPA на текстовые элементы, получить их расположение и по ним описать перевод. Этот вариант сложнее, но наверное точнее и удобнее в использовании
а как вы считаете?
Evgheni
Roman
первый самый распространенный и проверенный временем
в первом я вижу лишь 2 проблемы:
1. (более критичная) Плагины. Если приложение использует сторонние компоненты (а оно использует в большинстве случаев) то нет возможности их подстроить под интернационализацию. Во втором варианте же некий сканер отсканирует и их и предоставит к переводу
2. (менее критичная) наименование... больше времени тратишь на придумывание правильных лейблов определённым текстам. Во втором варианте-же ничего придумывать не надо, там тексты представляются в исходном языке (скорее всего Англ.)
Roman
если например подумать о каких-нибудь date picker'ах и прочего стороннего кода в котором явно будут тексты которые хер знает как переводить
Egor
Почему пишет Cannot read property 'length' of undefined ?
Roman
this там не тот
Evgheni
Egor
Evgheni
Нет, расскажи
у простой функции свой контекст(this), у стрелочной нет, юзай так () => {} и живи счастливо
Egor
Anonymous
стрелочная это сахарок для bind же :3
Alessandro
не совсем
Alessandro
но можно использовать вместо bind
Nikita
но не сахар
Nikita
еще это называется ранее связывание
Roman
Nikita
не откуда
Anonymous
из предыдущей
Evgheni
Nikita
у стрелочных функций нет контекста
Egor
Nikita
а теперь у тебя нет контекста
Nikita
ты должен создать контекст и в него поместить стрелочную функцию
Egor
Nikita
showTitle() {
// создали контект this.
setInterval(() => {
// тут свой контекст не нужен, поэтому используется стрелочная функция
}, 200)
}
Evgheni
Пример можешь?
showTitle: function () {
setInterval (() => {а дальше сам копируй}, 200)
}
Egor
Nikita
в общем разница в том, что стрелочной функции нет своего контекта вообще и поэтому в него можно кидать чужой контект и не бояться, что он перезапишиться. По сути обычное замыкание
Nikita
как будто ты записал const self = this. и при передаче в функцию ниже, у тебя ссылка на this в self не теряется
Egor
Nikita
поэтому это и называется ранее связывание. Потому, что как только объявили, изменить уже нельзя.
А позднее связывание, это когда контекст в this меняется в зависимости от места выполнения