pa[aad
@Autowired() class Component { constructor(private dependency: Dependency) {} }и плагин ввебпак никак $inject
pa[aad
никаких $inject руками, это слишком долго )
Dima
так у меня не веб пак, а галпом соберается, вообщем не в этом дело) по моей проблемке подскажите)
pa[aad
типа как во 2 ангуляре @Injectable
pa[aad
я хз, давно не пишу на 1
pa[aad
но за рутскоуп айяяй
Rem1te
Ща в метро зайду и отпишусь
Rem1te
Но если коротко, все что компонент рисует должен получать в входящих параметров
Rem1te
Никаких рут скоупов
Rem1te
Все должно быть явно
Dima
ну суть такова, что в одном из сервисов у меня по сокету получается значение, и вот его надо завести в темплейт компонента
Dima
как тогда правильней?
Rem1te
Нужно завести сервис который будет выступать стопой данных, в него кто то положит результат, и вы потом из него возьмёте эти данные когда вам нужно будет, и все будут счастливы, скоуп не будет дуть я ненужной информацией, и вы будете четко понимать откуда эти данные пришли
Rem1te
Например, вытащили из апи, положили в сторсервис, оттуда раздали компонентам родителям, из компонентов родителей раздали в компоненты которые должны отбражать
Rem1te
Все действия с данными так же только в обратном порядке
Rem1te
Нажали кнопку во Вью компонента, отдали родителю, он их подготовил и скормил в сервис для обработки данных
Dima
ну вот вытаскиваю с сервиса, так?
Rem1te
Блин, опять Флакс какой-то получился
Rem1te
ну вот вытаскиваю с сервиса, так?
Ага, там можно для этого свойства готер написать, если боитесь пропотеряиь ссылку
Dima
вот темплейт
Dima
компонент появляется до того как там сокетом значение залетит
Dima
как апдейтнуть?
Rem1te
var a =[] Пришли данные из апи a.push(...data)
Rem1te
Тогда в том на что ссылается ваш вар в компоненте, будет иметь данные и не потеряет ссылку
Rem1te
Удалять так же зачищая изначальный массив, а не подменяя его
Dima
чет я запутался, ниче не понял)
Rem1te
Щас в офис приеду и напишу код, сложно с телефона :(
Dima
ок спасибо огромное
Dima
Удалять так же зачищая изначальный массив, а не подменяя его
типа в сервисе в котором я апдейчу по сокету значение сделать вначале this.testResult = [] а потом при апдейте this.testResult.push(...значениеССокета) Потом уже в компоненте вот так и все гуд?
Rem1te
ага
Dima
ага
ок, но а как все таки еще апдейтить компонент? Например если мне надо в темплейте завязатся на ng-show
Dima
и где-то его менять
Dima
если менять с true false, то оно не будет апдейтить и прятать его
Dima
Dima
Dima
дальше меняю где-то значение в том сервисе, но компонент не реагирует
🎋🎋🥷 ngSamurai
Ng-show = bad idea)
Dima
а что не плохая?
🎋🎋🥷 ngSamurai
Компонента сама себя не обновит. Тут байндинг надо настроить.. сервисная часть через эмиты или бродкасты чекается
🎋🎋🥷 ngSamurai
а что не плохая?
Заменить нгшоу на нгиф и все)
Rem1te
а что не плохая?
разделите компоненты на те которые занимаються вью, и занимаються обработкой параметров в таком случае вы будете в том который родитель выгребать из сервиса данные и провайдить их в компонент который занимается вью тогда компонент в котором вы рендерите на вход будет получать isShow: boolean, list: [], и и сходя из этих параметров компонент который занимается вью всегда будет получать актуальные значения на вход. А родитель будет общаться с сервисом на тему получения новых данных вплоть до подписки на сервис, для примера сервис вам провайдит следующие поля list isShow тогда компонте обратиться к сервису и скажет ServiceName.subscribe(FunctionalCallback) functionCallback() на вход будет получать возможные значение { list: [], isShow: boolean, } и потом в родителе у которого функция хендлер будет происходить присваивание всегда актуальных данных из сервиса в Ваш родитель который занимается обработкой и провайдить их в вью компонент
Rem1te
Тогда Вам не прийдеться парится по поводу сохранения ссылок на данные
🎋🎋🥷 ngSamurai
+в нгрепите нет тракБай !
Rem1te
сервис всегда будет получать новые значение в Service.setValue(ValueKey: valueData) внутри сервиса вы будете делать this[valueKey] = valueData; this.subscribtion({ list: this.list, isShow: this.isShow })
Rem1te
и все проблемы по поводу обновления данных остануться в прошлом
Dima
вот на данном моем этапе
Dima
еще какой-то компонент делать? все ж вроде просто есть компонент, как ему сообщить об остальном мире как это было в директивах?)
Rem1te
еще какой-то компонент делать? все ж вроде просто есть компонент, как ему сообщить об остальном мире как это было в директивах?)
для общения с миром мы используем сервисы, на наших проектах последние пару лет мы отказались вообще от scope и rootScope
Dima
ну хорошо. Есть сервис в нем значение как-то апдейтится
Dima
сервис добавляю в компоненту
Rem1te
Мы используем архитектуру похожую на redux подход когда есть компонент который общается с внешним миром посредством сервисов и есть компоненты которые отображают контент исходя из данных которые получили на вход от родителя
Dima
ну так как ваш компонент который общается с сервисами апдейтится когда значение в сервисе изменилось? Я чет совсем не понял что мне делать на данном этапе
Rem1te
А окей, смотри class MyService { constructor() { this.subscribers = []; this.list = []; } subscribe(callback) { this.subscribers.push(callback); } unsubscribe(callback) { this.subscribers = this.subscribers.filter((subscrib) => subscrib !== callback); } setList(dataFromApi) { this.list = dataFromApi; this. } notifySubscribers() { this.subscribers.forEach((subscrib) => { subscrib({list: this.list}); }) } } class MyComponent() { constructor(MyService) { MyService.subscribe(this.handler.bind(this)); this.list = []; } handler(data) { this.list = data.list; } }
Rem1te
теперь каждый раз когда у сервиса будет вызываться setList все компоненты будут получать новое значение
Rem1te
все кто подписался на этот сервис
Dima
сори туплю дико, но не особо понял как эти 2 класса транспилировать на мой случай с уже существующим сервисом и компонентом(
Dima
вот так колхоз сильный?
Dima
вроде так заработало
Rem1te
То что я предложил более "правильное" решение вотча, поскольку не задействует магию вотча
Rem1te
С Вашим сервис и компонентом, нужно просто расширить их на те методы которые я описал
Rem1te
@jashka_jashka
Rem1te
Налетай, тут халява
Rem1te
кончилась акция :(
pa[aad
я и думал что он не по теме )
🎋🎋🥷 ngSamurai
вам бы юзнуть node glob а вообще какой у вас замысел, не ясно чего вы хотите добиться
спс. проверю замысел в ускорении работы пайплайна в GitLab... работа одного пайпа занимает 12 минут... позитивная работа внутри пайпа равна 12сек... все остальное время распаковка и запаковка папки node_modules в кэш/артифакт
Владимир
Вопрос по ui-router. По документации и примерам его нужно подключить внутри .config(). Если опция resolve() использует сервисы, например авторизация пользователя, а сервивсы нелзя инжектить в .config() (по документации можно только провайдеры и константы), значит нужно переписать сервис авторизации как провайдер?
Rem1te
@jashka_jashka
Nikolai
Репортите, может тележенька сама удолит
🎋🎋🥷 ngSamurai
Luxon будет заменой moment'y? (https://moment.github.io/luxon/)
🎋🎋🥷 ngSamurai
mm. tnx
Nikolai
там были какие-то ньюансы. не помню, какие
🎋🎋🥷 ngSamurai
там были какие-то ньюансы. не помню, какие
позитивные? или негативные? ^^
pa[aad
в статье все есть
Nikolai
изучал его, тогда он не был полноценной заменой почему-то. То ли там не было функций добавления-удаления дат, то ли ещё что
Данияр
доброй ночи подскажите плииз...пытаюсь сделать боковое меню и свайпом закрыть.. ng-swipe-left="navMenu={'left':'-105%'}" тут navMenu указал на боковушку ng-style="navMenu" так можно делать?
Данияр
т.е.при срабатывании свайпа стил установливается и закрывается..или как можно сделать?
🎋🎋🥷 ngSamurai
https://youtu.be/9s9I1_bsZkc