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
Блин, опять Флакс какой-то получился
Dima
Dima
компонент появляется до того как там сокетом значение залетит
Dima
как апдейтнуть?
Rem1te
var a =[]
Пришли данные из апи
a.push(...data)
Rem1te
Тогда в том на что ссылается ваш вар в компоненте, будет иметь данные и не потеряет ссылку
Rem1te
Удалять так же зачищая изначальный массив, а не подменяя его
Dima
чет я запутался, ниче не понял)
Rem1te
Щас в офис приеду и напишу код, сложно с телефона :(
Dima
ок спасибо огромное
Rem1te
ага
Dima
ага
ок, но а как все таки еще апдейтить компонент? Например если мне надо в темплейте завязатся на ng-show
Dima
и где-то его менять
Dima
если менять с true false, то оно не будет апдейтить и прятать его
Dima
Dima
Dima
дальше меняю где-то значение в том сервисе, но компонент не реагирует
🎋🎋🥷 ngSamurai
Ng-show = bad idea)
Dima
а что не плохая?
🎋🎋🥷 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
вот на данном моем этапе
Dima
еще какой-то компонент делать? все ж вроде просто есть компонент, как ему сообщить об остальном мире как это было в директивах?)
Rem1te
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
я и думал что он не по теме )
Владимир
Вопрос по ui-router. По документации и примерам его нужно подключить внутри .config(). Если опция resolve() использует сервисы, например авторизация пользователя, а сервивсы нелзя инжектить в .config() (по документации можно только провайдеры и константы), значит нужно переписать сервис авторизации как провайдер?
Rem1te
@jashka_jashka
Nikolai
Репортите, может тележенька сама удолит
Nikolai
🎋🎋🥷 ngSamurai
Luxon будет заменой moment'y? (https://moment.github.io/luxon/)
pa[aad
🎋🎋🥷 ngSamurai
mm. tnx
Nikolai
там были какие-то ньюансы. не помню, какие
🎋🎋🥷 ngSamurai
pa[aad
в статье все есть
Nikolai
изучал его, тогда он не был полноценной заменой почему-то. То ли там не было функций добавления-удаления дат, то ли ещё что
Данияр
доброй ночи подскажите плииз...пытаюсь сделать боковое меню и свайпом закрыть.. ng-swipe-left="navMenu={'left':'-105%'}" тут navMenu указал на боковушку ng-style="navMenu" так можно делать?
Данияр
т.е.при срабатывании свайпа стил установливается и закрывается..или как можно сделать?
🎋🎋🥷 ngSamurai
https://youtu.be/9s9I1_bsZkc