Задать вопрос
  • Курсор ввода в любом месте окна браузеров?

    rus0nix
    @rus0nix
    Admin
    Видимо вы нажали клавишу F7 в Microsoft Edge.
    5b549528da25f774201802.jpeg
    Нажмите опять эту клавишу для отключения.
    Ответ написан
    20 комментариев
  • Как изменить css свойство в зависимости от ширины дочернего компонента?

    delphinpro
    @delphinpro Куратор тега Sass
    frontend developer
    Задать в кастомном свойстве ширину сайдбара

    :root {
      --aside-width: 200px; /* По умолчанию */
    }
    
    .aside {
      width: var(--aside-width);
    }
    
    .main {
      margin-right: var(--aside-width);
    }


    В скрипте просто менять это свойство

    document.documentElement.style.setProperty('--aside-width', '200px'); // show
    document.documentElement.style.setProperty('--aside-width', '0'); // hide
    Ответ написан
    1 комментарий
  • Как сделать запись и получение данных?

    v3shin
    @v3shin
    Веб-шаман
    Каким образом здесь утроена структура бд?

    Произвольным. Здесь, похоже, вы видите результат какой-то выборки.

    Какой тип имеют поля address, company?

    String. А данные - либо array, либо stdClass, смотря как делали json_decode().

    Как мне их записать в бд

    Получить id нужных пользователей, затем сделать один insert для создания задачи и еще один insert для связывания задачи с пользователями.
    Но при чем тут задачи и пользователи, если разговор идет про адреса и компании?

    получать их в таком виде

    Один запрос на задачу и один запрос на ее пользователей. На php сформировать массив в нужном формате.
    Технически, запрос можно сделать один на все данные, но данные будут избыточны.
    Ответ написан
    Комментировать
  • Почему не работает регулярное выражение?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Знак доллара в конце паттерна уберите.
    Ответ написан
    Комментировать
  • Как найти и заменить данные в JSON?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Преобразовать json в словарь, получить по ключу idMembers список, обойти его, на каждой итерации проверять вхождение элемента в userArray, сгенерировать новый список из найденных элементов, записать его обратно в словарь. Сделать можно как обычным циклом, так и списковым включением.
    Ответ написан
    Комментировать
  • Как форматировать значение цены в input связанное с численным значением с помощью v-model?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Сделайте два разных (реально, конечно, это будет один и тот же) input'а, которые будут переключаться с помощью v-if/v-else - один для показа форматированного значения, другой для редактирования:

    <input v-if="edit" v-model="price" @blur="edit = false">
    <input v-else :value="formatPrice(price)" @focus="edit = true">

    data: () => ({
      edit: false,
      price: 666,
    }),
    methods: {
      formatPrice: price => `${(+price).toLocaleString()} руб.`,
    },

    https://jsfiddle.net/j6tf20cg/

    UPD. Можно и одним обойтись, но без v-model.
    Ответ написан
    7 комментариев
  • Как передать в filter массив аргументов?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Сделайте свои "аргументы" функциями, которые будут использоваться в качестве значений параметров метода filter, например:

    data: () => ({
      items: [ ... ],
      filters: [
        item => item.status === 'hello, world!!',
        item => item.price > 666,
        item => item.text.includes('fuck the world'),
      ],
    }),
    computed: {
      filteredItems() {
        return this.filters.reduce((items, filterFn) => items.filter(filterFn), this.items);
      },
    },
    Ответ написан
    Комментировать
  • Как обновлять данные axios после изменения?

    Таски "active" и "ready", вероятно, ничем не отличаются по структуре. Поэтому можно их отдавать с бэка единой кучкой. Добавить каждому флаг isDone (true / false).

    Раскидать их по панелям дашборда можно уже на фронте.

    При изменений флага на фронте, таск мгновенно-реактивно пропадёт из одной и попадёт в другую панельку. Остаётся уведомить бэк о новостях – отправить запрос, ответ на который в данном случае даже можно игнорировать.

    Как реализовать это во Vue — решать вам. Можно прикрутить Vuex и разобраться с глобальным стейтом и мутациями. Можно просто держать массив всех тасков в общем корневом компоненте, в нём же фильтровать активные / готовые и раздавать в дочерние через пропсы. Как из дочерних менять состояние родителей — распространённый вопрос и есть несколько решений. Удачных поисков!

    Если же состояние тасков меняется откуда-то ещё на бэке, т.е. инициатива изменений не в вашем фронте, а на бэке — придётся либо прикручивать сокеты, либо раз в секунду справшивать бэк «есть ли новости?», но это очень плохое решение. Лучше сокеты.
    Ответ написан
    Комментировать
  • У меня есть переменная в data g=1, я меняю ее значение, но все равно выводится число g равное 1, почему?

    Aetae
    @Aetae Куратор тега JavaScript
    Тлен
    this внутри function зависит от контекста вызова этой function.
    Когда срабатывает onAuthStateChanged - вызывается переданная ему функция-обработчик, которой устанавливается какой-то this(или не устанавливается, и тогда он по умолчанию window или, в строгом режиме, undefined). И этот this точно никак не связан с текущим this Vue, потому что тот никаким образом не передан при вызове, и, соответственно onAuthStateChanged о нём ничего не знает.

    Используй:
    a) (async function(user) { ... }).bind(this) чтобы жёстко привязать эту функцию к this.
    b) vm.g = 5;, т.к. таким образом конкретный this сохранён в переменную и не меняется в зависимости от контекста вызова.
    c) стрелочную функцию async (user) => { ... }, её механика работы по сути осуществляет неявный bind.
    d) функцию обработчик в методах Vue: Vue автоматически делает bind всех методов к this:
    onAuthStateChanged(this.onAuthStateChanged)
    methods: {
      onAuthStateChanged: async function (user) { ... }
    }
    Ответ написан
    Комментировать
  • Нужно сделать ссылку не кликабельной! Какой способ лучше всего подойдет?

    0xD34F
    @0xD34F
    Можно так:

    <a href="https://toster.ru" onclick="return false">link</a>

    Или так:

    a.disabled {
      pointer-events: none;
    }

    <a href="https://toster.ru" class="disabled">link</a>
    Ответ написан
    3 комментария
  • Как сравнить текущую дату в sql запросе?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    t.close_date >= curdate()
    Ответ написан
    Комментировать
  • Как с помощью grid сделать такое?

    Seasle
    @Seasle Куратор тега CSS
    Ответ написан
    Комментировать
  • Почему не работает удаление элемента из массива?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Работает. Удалять только бывает нечего. С чего вы взяли, что позиции элементов и их id в массивах elementData и selectedElArr будут совпадать? Индекс надо не передавать в метод, а вычислять самостоятельно внутри:

    methods: {
      toggleElement(id) {
        const index = this.selectedElArr.indexOf(id);
        if (index !== -1) {
          this.selectedElArr.splice(index, 1);
        } else {
          this.selectedElArr.push(id);
        }
      },
      ...

    @click="toggleElement(data.id)"
    Ответ написан
    Комментировать
  • Почему не работает удаление элемента из массива?

    @kttotto
    пофиг на чем писать
    Ошибка в логике метода showElement.

    Вы добавляете id всегда в конец списка, а удаляете id по индексу положения div в списке, хотя не факт, что id именно в этом месте будет.

    Например, кликнули по 3-му элементу, потом по второму, будет selectedElArr = [2, 1], потом кликаете по 3-ему, чтобы его закрыть и метод захочет удалить selectedElArr[2], а такого элемента даже нет. Ну и т.д.

    Логичнее добавлять selectedElArr[index]=true и удалять selectedElArr[index]=false, если опираться на порядок div в списке. Ну и проверять потом так же
    if (!!this.selectedElArr[index]) {
     this.selectedElArr[index] = false;
    } else {
     this.selectedElArr[index] = true;
    }}

    Ну или одной строкой

    this.selectedElArr[index] = !this.selectedElArr[index];

    Если не опираться, то я бы добавил поле data.isOpened (isActive, isVisible и т.д.) и уже отталкивался от него, это мне кажется надежнее.
    Ответ написан
    Комментировать
  • Как применить v-if только для одного экземпляра v-for?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Такие варианты есть:
    1. Сделать компонент, который будет заниматься отображением данных только одного элемента массива, унести свойство show в этот компонент - у каждого экземпляра оно будет собственное, независимое от других.
    2. Сделать свойство show массивом, хранить в нём id элементов, данные которых должны показываться.
    3. Пусть элементы массива сами определяют, надо ли их содержимое демонстрировать - добавить свойство show каждому из них.

    Это если данные в каждом из блоков должны отображаться независимо. Если же только в одном, тогда пусть свойство show содержит ссылку на соответствующий элемент массива или его индекс/id.
    Ответ написан
    1 комментарий
  • Как во vue изменить стили элементов при клике на родитель?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    <div class="lang-changer" @click="toggle = !toggle">
      <div :class="toggle ? 'lang-tog': 'lang'">
        <span :class="toggle ? 'a': 'b'">РУ</span>
        <span :class="toggle ? 'x': 'y'"></span>
      </div>
    </div>

    data(){
      return {
        toggle: false;
      }
    }

    Правда стили вложенных span по-хорошему лучше просто через css менять, относительно верхнего.
    Ответ написан
    Комментировать
  • Как называется эта конструкция?

    #1
    const myval = '+1';
    const arr = Object.keys(FList) // берем ключи из пар ключ-значение
    .filter(key=>key===myval); // ... и фильтруем по совпадению с нашей переменной myval
    
    for(let item of arr){
    console.log(FList[item]) // вытаскиваем обьекты по ключам, полученным ранее
    }


    #2
    const myval = '+1';
    for(const [key,value] of Object.entries(FList)){
    if(key===myval){
    console.log(value)
    }
    }
    Ответ написан
    1 комментарий
  • Как в WordPress вывести посты группами?

    vladchv
    @vladchv
    WordPress Developer
    Можно создать 2 цикла, первый:
    'posts_per_page' => 4,
    второй:
    'offset' => 4,
    Ответ написан
    2 комментария
  • Почему не работает условие ИЛИ?

    @alexalexes
    То что вы пытаетесь написать:
    if (question === 1||3)
    Значит: "условие ИЛИ какое-то число, эквивалентно true". То есть 3 - это эквивалент true. Ноль будет эквивалентом false. Посмотрите, чему будут эквиваленту отрицательные числа, мне лень смотреть документацию или пробовать консоль.

    В вашем случае, решение будет выглядеть так:
    if (question === 1|| question === 3)
    Если охота использовать перечисление в надежде сократить условие, то это может выглядеть так:
    if ([1,3].indexOf(question) > -1)
    Ответ написан
    Комментировать