Margarita
Ребят, подскажите пожалуйста, как правильно использовать $emit и v-on? Я в дочернем компоненте делаю this.$emit('msg'), в родительском <form v-on:msg="test"> в шаблоне, в функции test делаю console.log. Ничего не работает, событие не отлавливается :) Я не могу понять в чем дело, выглядит в точности как в доке
Margarita
Ща :)
Margarita
Я не знаю, какое количество кода на скринах надо, ну вот в общем-то они иллюстрируют то, что я уже написала
Margarita
//child
Margarita
Margarita
// parent
Margarita
Margarita
Margarita
Консоль выводит строку 'emitted' со скрина номер 1, строку 'ON' со скрина номер 3 не выводит ))
Maksim
обычно что-то типа такого делают в this.$emit("msg") -> this.$emit("msg", value) в created "//parent" напиши this.$on("msg", function(newValue){ ... })
Margarita
Сейчас попробую
Maksim
где "msg" предполагается функция
Владимир
я так понял, что парент у тебя - b-container. попробуй перевесить v-on с формы на тег самого парента (b-container)
Margarita
Хм, попробую
Anonymous
ее high contrast
Sergio
дочерний b-col?
Margarita
неее, дочерний там глубже в коде
Margarita
у меня там в b-col много всякой фигни выводится, вот дочерний компонент отвечает за вывод одной из такой фиготеней
Margarita
А, ребят
Margarita
Все понятно :D Я просто читать не умею :D
Margarita
Я повесила v-on на рандомный тег в родителе, который мне понравился, а надо было на тег, который дочерний компонент
Margarita
В моем случае <subgroups v-on:msg="test" :group-parent-id="groupParentId"></subgroups>
Margarita
Надо было весь код показывать😅
Владимир
так заработало или это теория? )
Margarita
Да )))
Margarita
Ну я повесила обработчик на тот тег, который собственно компонент
Margarita
Я не знаю, почему я решила, что на любой можно повесить😅 Это наверное пятница так действует😅😅😅
Владимир
хорошо что работает, на ващета странно
Margarita
не, почему
Margarita
в доке вот так написано
Margarita
<button-counter v-on:increment="incrementTotal"></button-counter>
Владимир
по мне так на любой тег в иерархии (главное чтоб не сбоку)
Владимир
иначе как сделать агрегатор (щёб ловил все однотипные месаги от детишек) ?
Margarita
Не, все правильно, это я просто фигово описала суть своей проблемы, а потом не до конца поняла твои комментарии; там, где ты пишешь про парента - я не поняла, какой именно родитель имеется ввиду, в моем случае у меня <subgroups> находится внутри <b-container>
Margarita
Ну и скрины я сделала не полностью, потому что там кода много
Margarita
Короче, проблема в моем идиотизме оказалась😅
Margarita
Насчет агрегатора: я так понимаю, это делается при помощи комбинации v-on и v-for
Margarita
ну вроде <item v-on:childevent v-for="..."></item>
Margarita
так ты поймаешь все однотипные месседжи от детишек😊
Владимир
ну для массивов да, а если произвольное деревце?
Владимир
всё равно странно
Margarita
Произвольное деревце - это как?
Margarita
Это либо разные компоненты, либо вложенность
Владимир
ну автоформа кака-нибудь…
Margarita
Если у тебя куча разноплановых компонентов, которые посылают разные события, то придется несколько раз повесить обработчик, я так понимаю
Margarita
<item1 v-on:childevent v-for="..."></item1>, <item2 v-on:childevent v-for="..."></item2>
Margarita
А если вложенность глубокая, то есть ловить надо не только от детей, но и от внуков и тд, то надо в детях ловить события от внуков и передавать наверх
Владимир
ладна-ладна, не волнуйся так ). подумать нада..
Margarita
либо можно сделать шину😊если прям так серьезно планируется события использовать
Владимир
с шиной у меня вопрос не закрыт, кстати
Владимир
чёт мне не нравятся эти ваши флюксы-вьюксы 🙂
Astr0junk
@MetaDriver очень жаль)
Владимир
у мну аргументы есть 🙂 ну т.е. явное хранения состояния это благо. как возможность
Владимир
как обязанность - уже зло
Владимир
а что касается управления этим состоянием - то реализация во всех этих флюксах откровенно кривая
Владимир
слишком много букаф
Владимир
через край просто
Valerii
Ребят не было ни у кого проблемы что v-for меняет порядок при выводе по ключам? Например v-for="val, key in {b:1, a2, c3}" у меня key выводится a,b,c Он что-ли сортирует перед выводом?
Владимир
нужна либо на порядок большая автоматизация процесса (щёб не прописывать каждый чих)
Владимир
либо ваще другая идеология
Владимир
я в раздумьях пока
Владимир
Ребят не было ни у кого проблемы что v-for меняет порядок при выводе по ключам? Например v-for="val, key in {b:1, a2, c3}" у меня key выводится a,b,c Он что-ли сортирует перед выводом?
в ангуларе, помнится, такая трабла была. потом вроде починили. попробуй кстати в скобки взять (v, key) вроде в доках так
Valerii
такое чувство что он читает обьект в обратной последовательности
zinge 🐌
ребят input.datetimepicker( required v-model="fields.close_date" :disabled="fields.status_id !== 2" ) что за шляпа datetimepicker ... как только его навешиваю у меня fields.close_date перестает реактировать
zinge 🐌
Ребят не было ни у кого проблемы что v-for меняет порядок при выводе по ключам? Например v-for="val, key in {b:1, a2, c3}" у меня key выводится a,b,c Он что-ли сортирует перед выводом?
об этом написано в доках ,типа блабла оптимизация внутренняя ... с ходу не скажу, попробуй ключи усложнить чтобы не поддавались оптимизации влоб(костыль ага) или поискать в доке
qluqua
Ребят не было ни у кого проблемы что v-for меняет порядок при выводе по ключам? Например v-for="val, key in {b:1, a2, c3}" у меня key выводится a,b,c Он что-ли сортирует перед выводом?
Могу предположить, что итерируется объект, а внутри объектов порядок элементов непостоянный, в отличие от массивов. Если вью и вмешивается в сортировку то возможно из-за этого. Если важен порядок, может лучше использовать массив объектов?
Valerii
Да уже почитал, короче проблема в джаваскрипте а не вью. Джаваскрипт не гарантирует последовательность свойств в обьекте, нужно или массив использовать или писать на C#
Valerii
Самый бред в том, что апи мне присылает мне JSON с одним порядком свойств, а после JSON.parse он становится другим. Я восхищен!
Eugene
Самый бред в том, что апи мне присылает мне JSON с одним порядком свойств, а после JSON.parse он становится другим. Я восхищен!
ну правильно. потому что json это объект, а не массив. а как там карта ляжет, один js знает
Valerii
сложно это будет обьяснить апишнику, который пишет на джаве =)
Eugene
как вариант - выдавать среди свойств timestamp и по нему сортировать предварительно
Eugene
ну или какой-то id изобретать. по-любому )
Владимир
если в консоли- то таки это лог сортирует