Dima
ng-click="$ctrl.closeTestResult()" WTF?)
Метод из контроллера компонента. Исправь плз код как считаешь правильно и я гляну)
🎋🎋🥷 ngSamurai
https://jsfiddle.net/73q20wdg/1/
🎋🎋🥷 ngSamurai
Метод из контроллера компонента. Исправь плз код как считаешь правильно и я гляну)
div(class="test-result-bar" ng-if="$ctrl.isVisible") ng-if я бы перенес на parent-component
Dima
https://jsfiddle.net/73q20wdg/1/
1) зачем в конструкторе просто инжектим сервис? 2) closeTestResult() { // todo... do something hire } так что именно do, что изменять? 3) а зачем делать копию если уже есть в компоненте переменная? this.isVisible = this.isTestResultBarVisible;
Dima
типа в компоненте уже есть this.isTestResultBarVisible а мы создаем еще и this.isVisible
Dima
вот апдейтнул по замечанию на уровень выше ng-if https://jsfiddle.net/hitman333/65xc1qd8/3/
Dima
testResult правильный или и с ним что-то ?
Dima
ну и все еще о байндингах) в чем таки разница между "<" и "=" потому что даже при "<" когда меняю в компоненте забинденную переменную, то родительская тоже меняется
Dima
хотя из того что я понял должна менятся если "=" или что я не так понял?)
🎋🎋🥷 ngSamurai
ну и все еще о байндингах) в чем таки разница между "<" и "=" потому что даже при "<" когда меняю в компоненте забинденную переменную, то родительская тоже меняется
< - one way binding - данные записанные в компонент будут единожды инициализированны = - two way binding - данные можно передавать в оба направления и компонент имеет постоянно обновленное значение переинициализация "<"-байндинга возможна при ререндеринге парент-компонента в случае использования "<"-байндинга желательно использовать хук onChange(chObj) и проверять изменения из вне... такое делают уже когда появляется необхожимость в жесткой оптимизации приложения.... на ранних этапах мы вообще не смотрим на это и везде используется "="... после окончания релиза и по мере необходимости рефакторинга/оптимизаций / можно уже задумываться о том. что было бы лучше сделать для быстроты... а если еще глубже идти. то посмотри на "::"-опцию) и как я уже писал... 1) работу в компоненте нужно делать в onInit() а не в контроллере... 2) controllerAs: "$ctrl" - уже сам по себе default-value, и является избыточным
Константин
< - one way binding - данные записанные в компонент будут единожды инициализированны = - two way binding - данные можно передавать в оба направления и компонент имеет постоянно обновленное значение переинициализация "<"-байндинга возможна при ререндеринге парент-компонента в случае использования "<"-байндинга желательно использовать хук onChange(chObj) и проверять изменения из вне... такое делают уже когда появляется необхожимость в жесткой оптимизации приложения.... на ранних этапах мы вообще не смотрим на это и везде используется "="... после окончания релиза и по мере необходимости рефакторинга/оптимизаций / можно уже задумываться о том. что было бы лучше сделать для быстроты... а если еще глубже идти. то посмотри на "::"-опцию) и как я уже писал... 1) работу в компоненте нужно делать в onInit() а не в контроллере... 2) controllerAs: "$ctrl" - уже сам по себе default-value, и является избыточным
Имхо, “<“ следует использовать не для оптимизации, а для более явного потока данных Если компонент изменяет пришедшие к нему данные так, что они меняются и у родителя — дело плохо. Завтра добавится ещё два компонента и потом ищи-свищи, где, как и когда данные меняются Если же использовать функции типа on-value-changed, то это даёт офигенный контроль над данными - всегда можно понять откуда пришли изменения и решать — обновить оригинальный объект или нет
Константин
На мой взгляд поток данных должен идти по кругу, а не взад-вперёд Так компоненты становятся стабильнее и не влияют друг на друга
Dima
< - one way binding - данные записанные в компонент будут единожды инициализированны = - two way binding - данные можно передавать в оба направления и компонент имеет постоянно обновленное значение переинициализация "<"-байндинга возможна при ререндеринге парент-компонента в случае использования "<"-байндинга желательно использовать хук onChange(chObj) и проверять изменения из вне... такое делают уже когда появляется необхожимость в жесткой оптимизации приложения.... на ранних этапах мы вообще не смотрим на это и везде используется "="... после окончания релиза и по мере необходимости рефакторинга/оптимизаций / можно уже задумываться о том. что было бы лучше сделать для быстроты... а если еще глубже идти. то посмотри на "::"-опцию) и как я уже писал... 1) работу в компоненте нужно делать в onInit() а не в контроллере... 2) controllerAs: "$ctrl" - уже сам по себе default-value, и является избыточным
а по 1 пункту имелось ввиду не в контроллере, а конструкторе?
pa[aad
@javascript_jobs
Олег
Я так понял, что не один я такой. Передача данных в область видимости component поставит в тупик, если пользоваться официальной докой. Для меня стало ясно это после http://www.devcode4.com/article/angularjs-component-bindings И этого https://medium.com/front-end-weekly/angularjs-component-binding-types-my-experiences-10f354d4660
Anton
как лучше всего организовать межкомпонентное взаимодействие? у меня допустим есть родительский компонент и внутри него дочерний с выводом некоторого списка. допустим, что в родительском нажимают на кнопку и из дочернего должен удалиться один из элементов списка. через emit делать?
Константин
вот пример компонента checklist
Константин
Константин
И его темплейт
Константин
как лучше всего организовать межкомпонентное взаимодействие? у меня допустим есть родительский компонент и внутри него дочерний с выводом некоторого списка. допустим, что в родительском нажимают на кнопку и из дочернего должен удалиться один из элементов списка. через emit делать?
про emit/broadcast забудь, это на крайний случай, когда нет прямой связи между сущностями, или нет уверенности что она будет прямой повсеместное использование этих событий плохо скажется на поддержке, расширении и отладке кода
Anton
Понял, спасибо
Hey 👋, i'm Samvel
Привет всем. Кто работал с Aws?
pa[aad
Привет всем. Кто работал с Aws?
как твой вопрос относится к текущей тематике чата по 1 ангуляру ?
Hey 👋, i'm Samvel
Не относится
Hey 👋, i'm Samvel
И что
pa[aad
Не относится
гугл тогда чат aws @aws_ru
🎋🎋🥷 ngSamurai
И что
Тут просто все строго по теме, чтобы флуд не создавать
pa[aad
это как зайти в чат по aws, а там обсуждают ангуляр
Dima
подскажите как более правильно из 2 вариантов. Есть 2 сервиса В каждом из них делать $rootScope.$on('$stateChangeStart', (event, toState) =>{ ТУТ ДЕЛАЕМ что-то что касается именно этого сервиса. }) Или делать 1 прослушку и внутри делать действия для 2 сервисов?
Dima
вот наглядно. Сводить все в 1 слушатель или лучше 2 но внутри действия более таргетинговые
pa[aad
подскажите как более правильно из 2 вариантов. Есть 2 сервиса В каждом из них делать $rootScope.$on('$stateChangeStart', (event, toState) =>{ ТУТ ДЕЛАЕМ что-то что касается именно этого сервиса. }) Или делать 1 прослушку и внутри делать действия для 2 сервисов?
зависит что именно ты там будешь делать как бы, если в будущем требования к БЛ будут расходится то лучше делать отдельно иначе будут всякие кондишины что бы разруливать какой сервис вызвать а если вместе, то я даже причину не придумаю почему так может быть моежт БЛ в сервисах одинаковая тогда ?
Dima
хотя слушатель по сути на изменение стейта, так что наверно лучше в 1 месте держать 🤷‍♂️
pa[aad
даже лучше будет если сразу ивенты будут разные, что бы прилетали сразу нужные данные без кондишинов
pa[aad
надо разбираться вообщем, кейса не знаю
🎋🎋🥷 ngSamurai
@jashka_jashka / @DimaNazdratenko по/моему вешаться на *.$on в сервисе это не безопасное дело...
🎋🎋🥷 ngSamurai
привет! есть ли возмоэность докапаться где дигест ломается? Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
🎋🎋🥷 ngSamurai
+ есть ли какой-нибудб пакет для анализа dependency injection в проекте? вроде https://github.com/compodoc/ngd?
Oleg
привет! есть ли возмоэность докапаться где дигест ломается? Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
Поставить breakpoint на этой ошибке потом по коллстеку посмотреть что там выше, там где то есть данные которые сравниваются
pa[aad
+ есть ли какой-нибудб пакет для анализа dependency injection в проекте? вроде https://github.com/compodoc/ngd?
вроде бы и написать такой не оч сложно получить весь граф, сделать flatten и отрисовать диаграмку со связми ну может прийдется пройтись по массиву и что-то замапить
Zhanadil
ребята объясните плз, что происходит когда в обычную переменную закидываешь $q.defer, при работе с вебсокетом. Как можно узнать, что передается в $q.defer?
Zhanadil
в документации пишется что это промис, но откуда этот промис берет?
Константин
в документации пишется что это промис, но откуда этот промис берет?
можешь открыть исходники ангуляржс и найти там $q
Константин
узнаешь что туда кладётся)
Константин
только исходники не минифицированные)
Константин
а, например, вот здесь: https://github.com/angular/angular.js/tree/master/src
🎋🎋🥷 ngSamurai
Зачем это нужно вообще? 🧐
🎋🎋🥷 ngSamurai
Привет! можно ли как-то залочить загрузку компонент и приложения до тех пор пока не закончится appRun'ер ?
🎋🎋🥷 ngSamurai
Не отображать? Disabled?
если в angular.run() есть асинхронные запросы, то приложение запускается дальше... т/о грузится "/" а за ним уже и "/login"...
Dima
подскажите плз я когда подключал angularjs material с ним требовалось так же установить angular-aria вот недавно баг обнаружился в одном месте приложения в input когда ввожу пробел, то срабатывает колбек какой-то который мне закрывает окошко и делает плохо) дебагер привел к angular-aria, типа там в коде пробрасывается че-то. Удалил angular-aria и да проблемы нет. Кто-то с таким сталкивался? как пофиксить?)
Rem1te
Удалил-продлема пофиксилась-готово вы великолепны
Rem1te
:)
Dima
Удалил-продлема пофиксилась-готово вы великолепны
та то ж я что бы глянуть в ней ли реально проблема, так то мне она нужна потому что material ее требует
Dima
в общем если еще кто-то столкнется, то как вариант вот такое решение) https://github.com/angular/angular.js/issues/16664#issuecomment-413781723
🎋🎋🥷 ngSamurai
forgotPassword(model: Models.IForgotPasswordModel): ng.IPromise<void> { var deferred = this.$q.defer<void>(); this.$http.post(HttpService.serviceBase + 'api/account/forgotpassword', JSON.stringify(model)) .success((data) => { deferred.resolve(); }) .error((data, status) => { deferred.reject(this.onError(data, status)); }); return deferred.promise; } почему во многих примерах/проектах используют $q для httpService'a????
Anton
ну это антипаттерн
Константин
допустим, если взять $timeout если заюзать нативный setTimeout и внутри него изменить данные в $scope, то ангуляр не поймет что нужно обновить юай, и придётся вручную запускать дайджест если же $timeout, то ангуляр сделает всё сам
Константин
$http это и есть ангуляровская штука
а, ну да не совсем верно понял код и вопрос в этом коде КУ лишний однозначно
Anton
можно это все сделать и без $q
Константин
Anton
"кастомно обрабатывать запросы, например если имеем дело с цепочкой промисов"
Anton
думаю, тут напилили через $q как раз из-за deferred.reject(this.onError(data, status));
Anton
предположение
Константин
"кастомно обрабатывать запросы, например если имеем дело с цепочкой промисов"
ну допустим я открываю модалку, в которой будет кнопка сейв хочу, чтобы мне от модалки в then вернулся ответ от сервера или реджект при нажатии крестика или при ошибке от сервера
Константин
как без $q сделать?
Anton
да, похоже, что ты прав
Константин
да, похоже, что ты прав
жаль, думал узнаю какой-то секретный секрет) придётся дальше инжектить $q :D