pa[aad
скорее всего angularjs никакого отношения не имеет как перерисовывать слои
kdm🇩🇰
это да, но может кто использовал konva upd: пожалуйста, не надо капитанить)
Dmitriy
ребят
Dmitriy
что вы скажете по поводу $emit
Dmitriy
$on
Иван
не самая хорошая практика
Sasha
Считается, что использование броадкастов - так себе идея
Dmitriy
а это тот же бродкаст ?
Иван
да, только в другую сторону
Иван
вот здесь лучше показано
Rem1te
что вы скажете по поводу $emit
Плохо, не понятно поведение приложения, где-то кто-то что-то имитит И на него где-то что-то кто-то делает Очень запутанна архитектура
Sasha
Ну когда у тебя куча сервисов у компонентов в dependency injection - тож не айс, но вроде считается получше
Rem1te
Ну когда у тебя куча сервисов у компонентов в dependency injection - тож не айс, но вроде считается получше
Ну просто когда ты инжектишь сервисы в сервисы это хотя бы как-то описано
Rem1te
Что у тебя мол вот метод в одной сущности
Rem1te
вот метод в другой сущности
Rem1te
они друг от друга зависят
Rem1te
а так искать кто подписан на ккой ивент - сложно и запутанно
Rem1te
Но с другой стороны это упрощает расширения приложения
Rem1te
Но как по мне оно того не стоит
Sasha
Я сам не использую эвенты, просто у меня по-прежнему открыт вопрос по взаимодействию между компонентами
Sasha
И я вот думаю, если например какой-то компонент должен что-то триггернуть у другого, помимо стандартных инджектов сервисов, какие есть еще варианты? Насколько я знаю, во >2 ангулярах взаимдействие так же и организовано
Rem1te
Незнаю за ангуляр2 если честно, больше пишу на реакте и нгджс, но как мне кажется стучаться между сущностями без видимой связи это плохо : )
Rem1te
Незнаю как все но мне больше нравится :)
Rem1te
Я считаю чем меньше магии в том чем я пользуюсь - тем лучше
Rem1te
в нгджс очень много магии
Sasha
Ну в реакте же этот вопрос взаимодействия между компонентами решен различными реализациями флакса
Rem1te
Ну да, просто в реакте как таковом нету своей системы реализации логики или взаимодействия, в конце концов это просто вью либа
Sasha
Мне просто система взаимодействия через сервисы не очень нравится с точки зрения архитектуры. Можно релакс к нгжс прикрутить так-то)
Sasha
Все равно, пока не удавалось достичь на фронте такого же уровня абстракции, как на бэкенде или десктопных приложениях
Rem1te
Конечно, это просто библиотека
Rem1te
https://blog.grossman.io/angular-1-using-redux-architecture/
Rem1te
Первая же ссылка в гугле
Rem1te
Кстати тут когда-то кто-то расказывал за редакс в нг-джс
Sasha
Да, я тоже читал это. Вот и подумываю
Sasha
А есть вообще какие-нибудь статьи/книги по общим принципам архитектуры? Потому что, как я и сказал выше, не удается достигнуть такого же уровня абстракции, как на бэкенде
Иван
как я уже когда-то и говорил: осталось только два православных варианта взаимодействия компонентов: находятся в прямой видимости - input/output; хрен пойми как будут расположены относительно друг друга - шаред сервис.
Иван
для тех кому не хочется думать - выбираем вариант с шаред сервисом, так как он больее универсален и подходит во всех случаях, но возможен оверхед
Rem1te
и мне кажется адекватного решения тут не будет
Rem1te
как я уже когда-то и говорил: осталось только два православных варианта взаимодействия компонентов: находятся в прямой видимости - input/output; хрен пойми как будут расположены относительно друг друга - шаред сервис.
Ну почему, вот Флакс предлагает своё виденье построенния архитектуры приложения, и он более "джаваскриптовый" с его системой ивента и биндинга
pa[aad
есть еще шина данных
Иван
Ну почему, вот Флакс предлагает своё виденье построенния архитектуры приложения, и он более "джаваскриптовый" с его системой ивента и биндинга
для начала, у нас ангуляровский чатик... если перекладывать флакс архитектуру на ангуляр, то получится то же самое: "умные компоненты" (ака контейнеры <- ненавижу этот термин) используют шаред-сервисы, стэйт-менеджмент иструменты, коннект к редаксу/диспатч экшенов.... "глупые компоненты" используют только атрибутный биндинг, он же input/output в ангуляре... так что "ничто не ново под луной"©
Иван
в итоге как я уже и сказал, есть два православных метода общения компонентов: или через атрибуты, или через стэйт (в нативном ангуляре это шаред сервис)
pa[aad
А есть вообще какие-нибудь статьи/книги по общим принципам архитектуры? Потому что, как я и сказал выше, не удается достигнуть такого же уровня абстракции, как на бэкенде
Архитектура корпоративных программных приложений Мартин Фаулер если осилите я писал ответ, но что-то соединение было хреновое и не отправило
Sasha
Подскажите плиз, почему при programmatically изменениях ng-model, не дергается $parsers и как можно это сделать?
Иван
Насколько я помню, парсеры и не должны дёргаться... Должны дёргаться форматтеры... При пользовательском вводе: вьюмодель -> парсер -> модель. Если ты меняешь модель программно: модель -> форматтер -> вьюмодель. И где-то рядом ещё есть валидаторы, не забывайте про них тоже.
Sasha
Да, я не верно сформулировал. Очень странный кейс просто: $formatters дергается(в нем парсинг из стринги во флоат) и возвращает правильное значение, но в итоге в ngModel, $viewValue/$modelValue - стринга
Sasha
Да и вроде из доки, форматтер не апдейтит саму модель
Oleg
всем привет подскажите пожалуйста вдруг кто сталкивался с localeCompare кейс: нужно сортировать name, чтобы первыми всегда были спец. символы, затем цифры, затем буквы. сейчас так и реализовано, но, в примере я сделал 2 нейма: 'asdf' и 'ASDF' так вот ловеркейс сейчас в приоритете. вопрос: знает ли кто-то, кк сделать в этом примере апперкейс в приоритете над точно таким же именем в ловеркейсе? http://fiddle.jshell.net/maslaw/vhhgh/53/
Sasha
В общем, кейс такой: Есть виджет для numeric. В определенных условиях вызываются хуки, которые апдейтят модель напрямую. И бывает, что приходит стринга, нужно, чтобы в $modelValue был float.
Sasha
Помогло только записать в форматере: ngModel.$modelValue = parseFloat(value, 10); ngModel.$render();
Dmitriy
ребят снова я , подскажите пожалуйста
Dmitriy
есть родительский есть дочерний контроллер РК и ДК. в РК есть массив информации получаю из сервиса. Как болле правильно получить данные этого массива инжектить в ДК сервис и получать данные с сервиса или сделать что то такое вот в ДК let language = $scope.$parent.main_array;
Dmitriy
?
Rem1te
Дочернему компоненту прокиньте его как аттрибут
Rem1te
let language = $scope.$parent.main_array; так плохо
Dmitriy
ну это не компоненты)
Dmitriy
по сути два контроллера
Dmitriy
у которых общий массив инфы
Sasha
Ну а может напрямую из сервиса? РК же берет
Sasha
$parent - так себе идея
Rem1te
Если просто прокинуть то можно и из сервиса, но если родительский компонент подифицирует эти данные - то надо прокидывать вниз
Dmitriy
Ну а может напрямую из сервиса? РК же берет
в этом и вопрос, напрямую с РК брать или все таки сервис юзать ? ведь этот масив в одной области видимости в РК и ДК
Dmitriy
проверил только что я в дочернем могу вобще вот так достуаться $scope.main_array )
Dmitriy
что логично так как скоп у них одинакв
Rem1te
не факт
Dmitriy
не массив не модифицируется
Dmitriy
он есть по сути как константа ) , вопрос в том как правильно доставать его и откуда )
Dmitriy
агонь :)
я так понима надо скопы разделять ?)
Rem1te
Все зависит от конкретной ситуации
Rem1te
Если у Вас это не отдельные сущности то можно шарить один скоуп
Dmitriy
отдельные
Dmitriy
если отдельные то вязать сервисом?
Dmitriy
правильно ?