[ВАЖНО - Читай описание] Vue.js компонент всплывающее модальное окно используя SLOT и $REFS

แชร์
ฝัง
  • เผยแพร่เมื่อ 14 พ.ย. 2024

ความคิดเห็น • 59

  • @АлмазФахрутдинов-м9п
    @АлмазФахрутдинов-м9п 4 ปีที่แล้ว +8

    Спасибо добрый человек!) Я наконец понял для чего нужны слоты

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Алмаз Фахрутдинов наздоровье:)

  • @ingvarriver5793
    @ingvarriver5793 4 ปีที่แล้ว +4

    Отлично. Все получилось, понятно объясняете. 👍

  • @igorkulibaba7287
    @igorkulibaba7287 4 ปีที่แล้ว +3

    Отличнейший урок! Спасибо за труды

  • @БорисЧерников-м3ь
    @БорисЧерников-м3ь 4 ปีที่แล้ว +9

    Спасибо, то что доктор прописал 😉

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +2

      Борис Черников наздоровье:)

  • @JohnDoe-p1y
    @JohnDoe-p1y 3 ปีที่แล้ว +2

    Читешь доки все понятно. Потом думаешь: 'а зачем?' Потом смотришь видос и приходит первое понимание. Спасибо.

  • @BorodinRA
    @BorodinRA 2 ปีที่แล้ว

    Спасибо! Ты объяснил то чего нет в оф документации...

  • @AlexanderGrinvald
    @AlexanderGrinvald 4 ปีที่แล้ว +1

    Отлично, все работает, очень полезный урок

  • @oleksiizelenko9357
    @oleksiizelenko9357 4 ปีที่แล้ว

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

  • @Rasulyo
    @Rasulyo 3 ปีที่แล้ว

    Отличное объяснение , в 11 видео , vm.selected = category.name)

  • @timminero7664
    @timminero7664 4 ปีที่แล้ว +1

    Классно!
    Вот только звук тихий, но видео очень крутое!!
    Спасибо большое за труд!!

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +1

      Timmi Nero да со зауком я дальше разобрался:)

  • @ihorlevit5369
    @ihorlevit5369 ปีที่แล้ว

    💪🚀🚀

  • @anton-trofimov
    @anton-trofimov 4 ปีที่แล้ว +2

    Хороший урок. Спасибо. Если есть возможность, увеличьте масштаб, плохо видно. И можно же метод не задавать кнопке, можно просто же директиву v-show со значением true ставить. И ещё - можно же как-то обойтись без нативного js при закрытии на wrapper?

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Вы про какую именно кнопку? Показа поапа? А как его тогда показывать и скрывать? Кто будет менять true на false в v-show/v-if?)

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +1

      V-show это скрытие и показ элемента через display:none, v-if это вообще удаление и монтирование элемента в дом-дерево. Если элементу сказать v-show=“true” это будет во-первых бессмысленное действие, так как элемент изначально видим, а во-вторых статичное. Чтобы скрыть элемент по-умолчанию, надо ему через директиву v-if или v-show задать переменную с значением false, а для показа надо эту переменную менять на true. А как можно менять переменную без метода? Разве что в template на кнопку на @click так и повесить @click=“переменная=true”. Но не хорошо писать javascript в template, если можно поместить это в метод

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Антон Трофимов Для закрытия вы можете использовать директивы. Например v-clickoutside (это не дериктива vue. Вам придется ее писать самому!). Поищите в гугле, но это тоже отчасти наттвный js. Либо плагины какие-то. Но поверьте, те 2 строчки на нативном js что написал я - это самое простое решение:)

    • @anton-trofimov
      @anton-trofimov 4 ปีที่แล้ว +2

      @@gofrontend2220 Добрый день. На счёт закрытия на область вне попапа - нашел такую штуку click.self, ещё проще действует)

  • @jenesius9397
    @jenesius9397 3 ปีที่แล้ว

    jenesius-vue-modal для Vue3 отличный инструмент

  • @vladbreez4036
    @vladbreez4036 3 ปีที่แล้ว

    Было бы очень полезно, если бы вы могли в самом начала показать результат, то что мы хотим сделать, а после уже рассказывать про реализацию.
    Пришлось сначала перемотать в самый конец, а потом уже понял что это то что мне нужно и начал смотреть. Но лукас я всё равно поставлю

    • @vladbreez4036
      @vladbreez4036 3 ปีที่แล้ว

      я по-другому реализовал, без слотов и рефс. через v-show и @close
      Я хз где тот комент, где спрашивали, но на всякий случай оставлю это здесь 😁

  • @sematv121
    @sematv121 3 ปีที่แล้ว

    4:15 Стили не желательно так писать т.к. это усложняет поиск потом для следующего программиста этого стиля

  • @r35p3ct00
    @r35p3ct00 2 ปีที่แล้ว +1

    Для скрытия окна я использовал метод проще и, как мне кажется, правильней, передал по клику $event в функцию, где: if (event.path[0] == this.$refs.editor_wrap) {this.show_editor = !this.show_editor}
    Может кому пригодится.

  • @alexanderxp2804
    @alexanderxp2804 4 ปีที่แล้ว +1

    На 2:55 После прописывания строки "material-design-icons-iconfont": "^5.0.1" , в файл package,json и строки import 'material-design-icons-iconfont' в файл main.js возникает ошибка: Module not found: Error: Can't resolve 'material-design-icons-iconfont' in 'C:\GitHub
    \tutorial_online_shop\src' . Данную ошибку устранил собственно командой установки : npm install material-design-icons-iconfont --save . После чего ошибка пропала. Данная команда установки прописала еще в файле package-lock.json следующий объект:
    "material-design-icons-iconfont": {
    "version": "5.0.1",
    "resolved": "registry.npmjs.org/material-design-icons-iconfont/-/material-design-
    icons-iconfont-5.0.1.tgz",
    "integrity": "sha512-Xg6rIdGrfySTqiTZ6d
    +nQbcFepS6R4uKbJP0oAqyeZXJY/bX6mZDnOmmUJusqLXfhIwirs0c++a6JpqVa8RFvA=="
    },

  • @ant3413
    @ant3413 3 ปีที่แล้ว

    Go Frontend подскажи пожалуйста,а вот на TH-cam например колочольчик,это ведь по сути всплывающий popup тоже?и как его написать?)

  • @SergiuBurduja-y1l
    @SergiuBurduja-y1l 3 ปีที่แล้ว

    Спасибо за урок, только на самом деле это не универсальный компонент.
    Нужно было использовать store, и там поработать с action и getters, чтобы не использовать emit.

  • @vitiok78
    @vitiok78 4 ปีที่แล้ว +3

    А почему не используете стрелочные функции для сохранения контекста?

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +1

      Victor Cozhuhari потому что не привык:) они более короткие и красивые, но из-за специфики как раз контекста можно запутаться и потом огрести багов:) дело вкуса

    • @vitiok78
      @vitiok78 4 ปีที่แล้ว +1

      @@gofrontend2220 Согласен. Я сразу чётко уяснил их отличие именно в плане контекста, пользуюсь там, где надо, и это экономит много повторяющихся действий. Мне они, кстати, наоборот, не нравятся в плане красоты, но как инструмент они хороши

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +1

      @@vitiok78 Главное чтоб было удобно самому и не мешало другим, если таковые есть )

  • @ИгорьНово
    @ИгорьНово 2 ปีที่แล้ว

    Возвращайся на ютуб!

  • @mrfriz
    @mrfriz 3 ปีที่แล้ว

    Напутствие к просмотру, если вы пришли сюда ради Vue, а не CSS:
    L = +10 сек
    J = -10 сек
    Shift+> = ускорить (нажимаем 4 раза)

  • @kf9465
    @kf9465 4 ปีที่แล้ว

    Здравствуйте! Как из потомка получить доступ к computed родителя? получение метода идет через emit, а вычисляемые свойства как?

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Kamil Fataliev во-первых эмит не получает доступ к методу родителя. Эмит поднимает метод из дочернего компонента и обрабатывает его методом родителя. Доступа у дочернего компонента не. Вообще ни к чему вне себя самого. Но вы можете передать дочернему компоненту какой-нибудь компьютед через props. и в дочернем принимаете в разделе props

    • @kf9465
      @kf9465 4 ปีที่แล้ว

      @@gofrontend2220 Здравствуйте! Делаю по видео попап для каждой карточки товара, но при открытии разных карточек данные в ней идут от первой карточки, что я мог упустить? Единственное отличие от вашего видео это то что модалка сделана на бутстрапе, но это ведь не важно насколько я понял

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Kamil Fataliev не важно да. Надо код смотреть. Попап показывает то, что в него передали. Смотрите почему в него прилетает только первая карточка

    • @kf9465
      @kf9465 4 ปีที่แล้ว

      Go Frontend попозже у компа буду, код может отправлю, возможно кэш браузера фигней страдает , гляну отпишусь, спасибо

  • @Влад-ф6с2р
    @Влад-ф6с2р 2 ปีที่แล้ว

    *Привет мир*

  • @gofrontend2220
    @gofrontend2220  ปีที่แล้ว

    ! ВАЖНО - Читайте описание к видео ! 🔥🔥🔥👆👆👆

  • @jeqtos9643
    @jeqtos9643 4 ปีที่แล้ว

    Почему компоненты называются с приставкой v-? Нельзя по расширению файлов понять, что используется vue?

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +2

      Jeqtos просто так. Мне так нравится. И v к vue никакого отношения не имеет

    • @GeliosGarik
      @GeliosGarik 4 ปีที่แล้ว +1

      посмотрите *Урок 8/8. Refactoring приложения Vue. Best-practise* там подробно объясняется.
      Если кратко, то любой префикс можете придумать, это чтобы с родными html тегами не пересечься

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Garik Gelios есть еще такой момент: у вас могут быть общие компоненты и проектные. Так вот общие могут быть потом вынесены в другой проект. И чтобы не путаться какие общие, а какие чисто проектные - проектные должны как-то отличаться по названию. Вот и все.

  • @Kempriol
    @Kempriol 4 ปีที่แล้ว

    На сколько оправдано использовать emit для поднятия события в родителя?
    Я привык пропсами принимать ссылку на функцию в модалке, в вашем случае addToCart из родителя

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Kempriol а как еще поднять событие из ребенка в родителя, кроме как эмитом? Ну можно еще шину событий делать. Но имхо эмит проще

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Kempriol а пропсы работают только вниз. Из родителя в ребенка

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Kempriol а я понял. Нет ну можно как вы делать. Просто типа по бест практису: props это вниз, emit это наверх

    • @Kempriol
      @Kempriol 4 ปีที่แล้ว

      @@gofrontend2220 да, получается из ребенка я вызываю метод родителя. спасибо за ответ.. я так же и модалки люблю закрывать из родителя))

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว

      Kempriol а вот это плохо. Все методы, которые касаются только компонента должны быть в компоненте. Смотрите, что проще, 1 раз прописать в компоненте модалки метод закрытия по клику вне? Или же каждый раз это делать в родителе? А если у вас 20 ррдителей с этими модалками? 20 методов:) вы просто можете настроить и так и так. Например клик вне модалки - этот метод пишем в компоненте, но так же модалка может получать какой то пропс и следить за ним. И если пропс изменился из родителя - закрыть/открыть попап

  • @stt1632
    @stt1632 4 ปีที่แล้ว

    При добавлении айтема в корзину стоит ли этом случае делать кнопки disabled?

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +1

      Андрей StT а как душе угодно. Либо дизейблить и менять на них текст, типа ДОБАВЛЕНО или В КОРЗИНЕ. Либо оставлять как есть, но как то по-другому намекать пользователю о том, что товар добавлен. Напрример уведомлениями, про которые будет урок скоро.

    • @kf9465
      @kf9465 4 ปีที่แล้ว +1

      @@gofrontend2220 здравствуйте! А если мы например добавили и при добавлении поменяли текст на ДОБАВЛЕНО, как вы сказали, каким образом сделать так чтобы при повторном нажатии кнопка перевела нас в корзину, а не добавила товар еще раз?

    • @gofrontend2220
      @gofrontend2220  4 ปีที่แล้ว +2

      Kamil Fataliev ну поставте на это условие router.push({name: корзина}) как то так

  • @ivanololomine
    @ivanololomine 4 ปีที่แล้ว +3

    isVisible = !isVisible, а не 2 отдельных метода

  • @sematv121
    @sematv121 3 ปีที่แล้ว +1

    Ну такое +/- Со многим не согласен.

  • @checkTM
    @checkTM 3 ปีที่แล้ว +1

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