• Как отследить в watch такую v-model: v-model="props.item.dsec_declarant_kind"?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Можно сделать computed свойство - объект, где ключами будут dsec_nnn (вы их используете для генерации id строк, так что они, как я понял, уникальны), а значениями dsec_declarant_kind, изменения которых вас интересуют:

    computed: {
      declarantKind() {
        return this.dsec.reduce((acc, n) => (
          acc[n.dsec_nnn] = n.dsec_declarant_kind,
          acc
        ), {});
      },
    },

    И отслеживать его - ищем ключ, который присутствует в текущем и предыдущем объектах, с разными значениями. Если нашли (если нет - значит, массив сортировался, или же элемент был удалён или добавлен новый), достаём соответствующий объект из массива исходных данных:

    watch: {
      declarantKind(newVal, oldVal) {
        const [ key ] = Object
          .entries(newVal)
          .find(([ k, v ]) => oldVal.hasOwnProperty(k) && oldVal[k] !== v) || [];
    
        if (key) {
          const item = this.dsec.find(n => n.dsec_nnn === key);
          console.log('объект:', item);
          console.log(`было: ${oldVal[key]}`);
          console.log(`стало: ${newVal[key]}`);
        }
      },
    },
    Ответ написан
    8 комментариев
  • Почему метод save_click_or_not работает не правильно?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Vue не может отследить прямую установку значения по индексу.

    Надо использовать $set, замените

    this.steppers[index]=this.steppers[index]+this.step_go

    на

    this.$set(this.steppers, index, this.steppers[index] + this.step_go)
    Ответ написан
    1 комментарий
  • Почему Google неправильно индексирует этот Angular сайт?

    mazhekin
    @mazhekin
    Frontend, Backend Web Developer
    Потому что сайт сделан без поддержки server side rendering, для хорошей индексации его надо было делать с Angular Universal.
    5bec4a2372af3109688164.jpegРеализация серверной генерации страниц для приложе...
    Ответ написан
    6 комментариев
  • Можно ли смело хардкодить client_secret на Vue-фронте?

    abler98
    @abler98
    Software Engineer
    Для авторизации на фронте можно использовать Implicit Grant, нет смысла усложнять процедуру, так как получить client_secret из запроса очень просто.

    Только вот какой в этом смысл? Может стоить почитать о назначении OAuth авторизации?
    Ответ написан
    2 комментария
  • Как отправить запрос на выбраный день в календаре?

    rockon404
    @rockon404
    Frontend Developer
    А документацию почитать слабо?
    Ответ написан
    Комментировать
  • Отправка формы после изменения данных на Vue.js?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Работает, если в вместо this.$refs.form.submit() написать setTimeout(()=>this.$refs.form.submit(), 0) . Но как будет правильнее в этом случае.

    nextTick

    И почему вообще так происходит?

    потому что
    Ответ написан
    Комментировать
  • Как использовать переменные в шаблоне Vue?

    0xD34F
    @0xD34F Куратор тега Vue.js
    beforeCompile:

    Вот как? А версия vue у вас используется какая? Случайно не вторая? Если да, то...

    Ну и в целом - это довольно смело, пытаться использовать плагин, не обновлявшийся три года. Есть мнение, что вам следует найти что-нибудь посвежее.
    Ответ написан
    2 комментария
  • Существуют ли полезные гайды по интеграция Sentry в фронтенд часть приложения, написанного на Vue?

    lavezzi1
    @lavezzi1
    Там же все элементарно просто, в доках все написано.
    import Raven from 'raven-js';
    import RavenVue from 'raven-js/plugins/vue';
    
    if (ENV_PRODUCTION) {
      Raven
        .config(SENTRY_KEY, {
          environment: ENV,
        })
        .addPlugin(RavenVue, Vue)
        .install();
    }
    Ответ написан
    3 комментария
  • Вообщем есть блок skills с процентами, как можно через vue вывести по количеству процентов линию?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Для начала опишем элементы списка в виде массива объектов, где текст и процент будут отдельными свойствами:

    data: () => ({
      items: [
        { name:      'PHOTOSHOP', val: 88, color:    'red' },
        { name:    'ILLUSTRATOR', val: 92, color:  'green' },
        { name:         'SKETCH', val: 90, color: 'orange' },
        { name: 'AFFTER EFFECTS', val: 98, color:   'blue' },
      ],
    }),

    Затем сделаем методы, который будут генерировать текст и стили для рисования линии (в качестве линии можно использовать границу элемента, border-bottom например) у элемента списка:

    methods: {
      liText: item => `${item.name} ${item.val}%`,
      liStyle: item => ({
        'border-bottom': `3px solid ${item.color}`,
        width: `${item.val}%`,
      }),
    },

    И, наконец, отрендерим список:

    <ul>
      <li
        v-for="n in items"
        v-text="liText(n)"
        :style="liStyle(n)"
      ></li>
    </ul>
    Ответ написан
    Комментировать
  • Какие существуют способы защиты стилей CSS?

    opium
    @opium
    Просто люблю качественно работать
    мне кажется мания величия затмила ваш мозг глупейшими проблемами, вместо того чтобы код красиво оформить и выкладывать на гитхаб и делиться им, вы решили его зачем то прятать, просто задумайтесь, что хорошего вы сделали в жизни и почему не выкладываете его на гитхаб?
    Ответ написан
    11 комментариев
  • Почему не отрабатывает реактивность массива во vue?

    @nurdus Автор вопроса
    Нашел. Проблема была в том, что изначально "checked" был добавлен НЕ реактивно. :)
    Ответ написан
    Комментировать
  • Как сделать такое на Slick Slider?

    thewind
    @thewind
    php программист, front / backend developer
    у Slick есть опция arrows, поставьте ее в true и стилизуйте. Зачем изобретаете велосипед?
    Ответ написан
    Комментировать
  • Как сохранить в PDF или распечатать HTML таблицу?

    @D_E_S
    Распечатать таблицу -
    <a class="noprint btn" href='javascript:window.print(); void 0;'>Распечатать страницу</a>

    Сохранить в PDF - все 2х варианта использовать библиотеке на сервере или клиента как удобней или использовать сторонние сервисы, некоторые из них: Free HTML to PDF Converter, «Онлайн Конвертер PDF», Online-Convert.
    Ответ написан
    Комментировать
  • Как отработать клик вне блока?

    sharpfellow
    @sharpfellow
    Front
    VanillaJs
    function onClickClose(elem) { // вызвать в момент показа окна, где elem - окно
        function outsideClickListener(event) {
            if (!elem.contains(event.target) && isVisible(elem)) {  // проверяем, что клик не по элементу и элемент виден
                 elem.style.display = 'none'; //скрыть
                 document.removeEventListener('click', outsideClickListener);
            }
        }
        document.addEventListener('click', outsideClickListener)
    }
    function isVisible(elem) { //открыто ли условное окно
       return !!elem && !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
    }
    Ответ написан
    Комментировать
  • Почему такая задержка перед первой отрисовкой страницы?

    Aligatro
    @Aligatro
    Turn food and coffee into software...
    То на что вы указали, это время выполнения кода серверной части. И кстати, размер возвращаемого html сервером какой-то аномально огромный.
    Ответ написан
    1 комментарий
  • Почему такая задержка перед первой отрисовкой страницы?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    Waiting = 1.18s
    Это рендеринг HTML на сервере (PHP), он конечно не быстрый у вас, но и не то чтобы сильно медленный.

    Receiving = 7.03s
    А вот это уже сервер отдает (а браузер качает) этот сгенерированный HTML, и это аномально медленно. Скорее всего канал - говно.

    Кроме всего прочего, 127Кб HTML - это тоже аномально много, там DOM адски огромный, плюс скрипты и стили, отсюда еще столько же времени идет на парсинг и отрисовку.
    Ответ написан
    Комментировать
  • Как то можно красиво написать if-ы?

    mashletov
    @mashletov
    Math.random()
    if (socket.request.user === undefined) {
        console.error('error'); // или throw
        return;
    }
    
    if (socket.request.user.id === undefined) {
        console.error('error'); // или throw
        return;
    }
    
    // todo
    Ответ написан
    8 комментариев
  • По какой причине появлется белый фон при заходе через мобильный браузер?

    @game802
    уберите width: 1040px;
    .section1 {
        background: #000000;
        height: 884px;
        /* width: 1040px; */
    }
    Ответ написан
    Комментировать
  • CMS своими руками

    @egorinsk
    Автор, а что гуглить. Есть минимум 3 способа: расковырять простую Open-Source CMS (проблема: найти CMS с хорошей архитектурой и аккуратным кодом), устроиться в компанию, у которой есть своя CMS (а она есть почти у каждой студии), и наконец, написать самому правильно.

    Маны нужны не по написанию CMS, а по используемым продуктам и технологиям.

    Сначала надо определиться с задачей. Установите и попользуйтесь несколькими CMS, просто чтобы увидеть особенности их работы. (если вы не можете это сделать — вам надо изучать основы установки и настройки apache/mysql/whatever, а не CMS писать. Уходите практиковать эти навыки). Также, есть хороший сайт, где установлены демки десятков CMS и можно их посмотреть, не устанавливая.

    Запишите, что вы хотите получить, сделайте наброски страниц. Определитесь с требованиями к вашей CMS. Какие в ней будут модули, как ими можно управлять.

    CMS обычно состоит из 2 частей — т.н. «админки» (запароленный раздел, где меняется конфигурация сайта, добавляются материалы) и публичной части сайта, которую видят пользователи.

    Если вы еще не бросили эту затею, перейдем к следующему пункту. Проектирование архитектуры и написание CMS. Чтобы хорошо писать сложную CMS, нужен опыт и понимание того, как вообще писать сложные программы. Нужно глубокое знание HTTP/HTML/CSS/JS/SQL. А именно:

    — система должна быть модульной, чтобы, написав основу, можно было, не переписывая ее, не спеша добавлять модули и расширять функционал
    — система должна писаться с использованием грамотной архитектуры и аккуратного кода, так как поддержка и переписывание плохого кода будет отнимать у вас слишком много сил. А потом в нем вообще никто не сможет разобраться.

    Что еще надо знать. Во-первых, надо иметь представление что значит MVC или 3-звенная архитектура.

    M в MVC — это Model. CMS скорее всего будет хранить данные в БД — надо знать, что такое и как пишется DBAL (гуглите: PDO), плейсхолдеры в запросах, возможно, Table Gateway, ознакомиться с тем, что такое ORM, и почему PHP-ные ORM так тормозят. Если будете делать модельки, не храните значения полей в публичных свойствах — это неудобно и нарушает инкапсуляцию. Храните их в приватном массиве $attributes.

    V is for View. Надо знать, что такое шаблонизаторы (прочтите мануал по Smarty, Django Templates, HAML и XSLT, чтобы иметь общее представление, какие они бывают). Для PHP хорошие варианты — использовать чистый PHP или XSLT, если осилите. Smarty — устаревший тормозной хлам, Twig тоже имеет недостатки. И не стоит ставить шаблонизатор, только, чтобы писать {$a} вместо [?= $a =].

    Не смешивайте логику (сложные вычисления, обращение к БД) и шаблонизацию. Лучше сделайте 2 файла: один с кодом, другой с шаблоном. В идеале, шаблонизатор получает от контроллера значения переменных и, кроме хелперов, никакого другого кода не вызывает.

    C — контроллеры. Но это самая простая часть, контроллер — это просто класс с методами типа viewAction(), editAction() и роутер, который смотрит на УРЛ и вызывает нужный контроллер. Посмотрите, как устроен Zend_Controller и Zend_Front_Contriller, и сделайте так же, но попроще. выкинув 90% функционала — он вам не понадобится.

    Нужно как-то сделать систему компонентной без сильных связей: чтобы ядро могло работать и без модулей, а добавление модуля не требовало дописывания кода в ядро. Почитайте про Dependency Injection, а также Observer (observer — это когда мы делаем функцию addEventListener()).

    Не используйте хуки, как в Друпал. Это дурной и порочный путь, взятый видимо из древных времен и программирования на Си.

    Что еще. Освоив все эти понятия, у вас в принципе не будет сложностей написать CMS, но почитайте еще мои советы по тому, как писать правильный код с исп. ООП: habrahabr.ru/qa/17158/#answer_70869

    Написание своих велосипедов, в общем, полезно и способствует расширению кругозора разработчика, заставляет его изучать разные подходы к написанию кода.

    Ну что еще. Если (в чем я сильно сомневаюсь) благодаря моему скромного совету вы все же сможете пройти этот нелегкий путь и станете успешным разработчиком, можете заплатить мне денег. Я не против.
    Ответ написан
    Комментировать