pa[aad
опишу как я сейчас использую на проекте (около 10 больших разелов типа црм, сделки и тому подобное, сотни компонентов), есть некая общая структура (компонент страницы, ресурсы, сервисы на раздел), согласованность. Одна из таких вещей это сервис фильтров, куда регистрируются (подписываются) все умные компоненты по уникальному имени (ключик), при любом изменении фильтров идет рассылка всем подписчикам (к примеру компонент и поиск в одно месте, какие-то фильтры в другом - в сайдбаре к примеру). Его же использую для обновления данных, решает проблему выше. Но тут проблема в том, что это дополнительная связанность и хотелось бы избавыить от такого божественного сервиса на который все подписываются, хочется выровнять поток данных и вот уперся в текущий вопрос.
почитайте Мартин Фаулер шаблоны корпоративных приложений найдете для себя новое
Sergey
А чего ж не Кнута сразу
Sergey
:)
Maksym
это компонент который по конфигу строит шапку и вызывает дочерние контейнеры, в шапке помимо меню и есть эта кнопокчка Обновить
Maksym
За книгу спасибо, читаю постепенно, сейчас Боба перепрочитываю, каждый раз совершенно другое понимание контента книги
pa[aad
А чего ж не Кнута сразу
что там за книга, по С++ ?
pa[aad
А чего ж не Кнута сразу
Мартин Фаулер это то что действительно нужно читать еще можно Object Thinking для понимание ООП в реальности как оно должно быть
Sergey
Да много книжек хороших есть, ну просто совет кмк так себе, как собрание сочинений безусловно божественного дяди боба вот прям сейчас поможет решить проблему?)
Sergey
Так тут же ангуларовская специфика скорее, а не какая-то концептуальная, хотя кто знает
Sergey
это компонент который по конфигу строит шапку и вызывает дочерние контейнеры, в шапке помимо меню и есть эта кнопокчка Обновить
Если это кнопка обновления произвольного контента, то я бы делал $state.reload. Это если 1. я всё правильно таки понял и 2. используется ui-router.
Maksym
о, $state.reload возможно выход, какраз таки на уровне стейта роута логически спасибо
Sergey
Ну это может быть плохо, если там резолвы чудовищные какие-то
Maksym
да... у меня для конфига страницы запрос за каунтами, не очень хорошо
Anonymous
hey guys, just in case someone might be interested in a remote-position https://www.upwork.com/jobs/~01d1f84112b62711f8
Владислав
реьбят вопрос на засыпку
Владислав
как будет поступить наиболее грамотнее
Владислав
http://joxi.ru/p27aJW7s0Mx7Dr вот сократить надо запись
Владислав
Groups это обычный $resource
Владислав
из вариантов решения http://joxi.ru/GrqjR1gTNoYEKm
Nikolay
Суть в том чтобы не писать 2 раза me.loader.finish() ?
Владислав
В целом да )
Nikolay
вариант на втором скрине выполнить finish только в случае с resolve
Владислав
ну и суть в том что у ресурса в методе гет нету стандартного get приходится прикрутить промис, может есть запись поумнее
pa[aad
В целом да )
написать interceptor для лоадера только он будет глобальный еще как вариант сделать свой сервис для http и туда передавать параметры, а нужно ли показывать лоадер это учитываешь в intercetor`e
Nikolay
или как то так Resource().get().$promise.then().catch().finally();
Nikolay
и в finally запихать вызов
Владислав
Да правильнее согласен про свой сервис
Владислав
в рамках текущей проблемы интересно как будет более грамотнее
Владислав
Resource().get().$promise.then() разве не сработает после выполнения ?
Владислав
зачем catch finally ?
Владислав
Или я путаю что то :(
pa[aad
Resource().get().$promise.then() разве не сработает после выполнения ?
catch для отлавливания ошибки finally будет отрабатываться всегда после завершения запроса или ошибки вроде так но могу ошибаться
Nikolay
так тут второй функций catch идет, где display_http_err
Nikolay
http://joxi.ru/p27aJW7s0Mx7Dr вот сократить надо запись
Nikolay
а колбеки это плохо)
Владислав
т.е если в запросе будет ошибка и я использую $promise.then то я туда не попаду ? )
Nikolay
ага
Владислав
ну на самом деле быстрее будет уже просто проверить)))
Nikolay
при ошибках запроса идет в catch
Владислав
Спасибо всем
Евгений
Евгений
Привет, ребят хотел спросить, как можно обработать с помощью ангуляра фокус скролла? Сейчас объясню: есть фильтр, который находится слева, как навигационная панель. Там несколько инпутов. И есть скролл. Но так же скролл есть и на всей странице, само собой. При скролле в этом фильтре, получается что в 50% фокус пробрасывается на основную страницу, и поскольку контейнер фильтра должен быть fixed, он отрывается от шапки и катится вниз вместе со скроллом основной страницы.
Евгений
Евгений
и как бы абсолютом решается, но опять же мне говорят фиксед оставлять
Евгений
можно ли через ангуляр как то повлиять на фокус
Евгений
потому как через css я немного связан
Евгений
top: 0\left: 0 на фиксд не подействует никак
Sad
Ребят обьясните как можно создать такую простую директиву, чтобы она применялась к атрибуту инпута и элемент к которому применяется данная директива делала примерно такой код document.getElementById("test").onclick = function() { this.select(); };
Sad
Спасибо я нашел решение)
Stas
ребят, подскажите как вы выводите ошибки пользователю, отправляете ли вы те что приходят из бэка или свои выдаёте?
Max
status code
Константин
ребят, подскажите как вы выводите ошибки пользователю, отправляете ли вы те что приходят из бэка или свои выдаёте?
Когда как Если ошибка случилась в результате работы на бэке - то можно вернуть с бэка (меньше связанности бэка и фронта) Если ошибка касается валидации и тд - то текст ошибки в js хранится
pa[aad
ребят, подскажите как вы выводите ошибки пользователю, отправляете ли вы те что приходят из бэка или свои выдаёте?
interceptor, а потом смотрю по коду ошибки, 422, там массив ошибок, а в нем массив с конкретными ошибками к ошибке ну типа [ name: [ required: 'filed "name" required' ] ]я писал свой сервис для http, и если я ему передаю параметр специальный, то он не будет обрабатывать ошибки тогда можно будет делать что угодно в catch
Stas
status code
а кроме статус кода? пользователю же эти цифры ничего не скажут
Stas
Когда как Если ошибка случилась в результате работы на бэке - то можно вернуть с бэка (меньше связанности бэка и фронта) Если ошибка касается валидации и тд - то текст ошибки в js хранится
но на бэкэ же может быть сообщение типа не нашёл айдишник такой в базе, это обрабатывается для пользователя или же так и отдаётся?
Max
на основание статус кода делать свой месседж
Константин
но на бэкэ же может быть сообщение типа не нашёл айдишник такой в базе, это обрабатывается для пользователя или же так и отдаётся?
технические ошибки надо в лог возвращать, а не юзеру но на основе них можно вернуть нормальный текст
pa[aad
но на бэкэ же может быть сообщение типа не нашёл айдишник такой в базе, это обрабатывается для пользователя или же так и отдаётся?
понимаешь, тут ведь еще должны правильные http code тебе прийти у них может быть под ошибки как у java spring
pa[aad
все что не для юзера - sentry
Stas
понимаешь, тут ведь еще должны правильные http code тебе прийти у них может быть под ошибки как у java spring
ну стандартный же код ошибки 404, есть еще там вроде 400 для не авторизованного, на этом в принципе всё)
pa[aad
еще 403
pa[aad
в зависимости от кода + внутренний код от сервера и ошибки
Stas
да нифига, это если проект маленький есть 200, 204, 201, 300, 401, 404, 500
ну 200, 201, 204 не касается же ошибки, это просто код ответа
Rem1te
Обсуждаем с беком кто будет генерировать ошибки, обычно АПИ возвращает человекочитаемые ошибки если ошибок нет - то есть заготовленный набор ошибок на коды ответа Все индивидуально Например валидацию бек возвращает просто массив невалидных полей и на фронте уже их подсвечиваем и выводим сообщение что следующие поля не валидно заполненные
pa[aad
ну 200, 201, 204 не касается же ошибки, это просто код ответа
да это так, но суть думаю ты понял мою
pa[aad
как выше говорят это индивидуально под проект
pa[aad
но лучше так не запариваться если у вас открытое API там нужно смотреть на стандарты
Stas
всем спасибо, примерно логику уловил
Stas
Ребятки, подскажите как можно после выбора файле без кнопки сабмит отправлять форму? Форма должа запустить функцию, я сейчас делаю через нг-сабмит.
Stas
всё, нашёл решение
Sergey
А какое кстати?) Вообще по идее самому руками собирать FormData, если бэк ждёт в таком формате
Sasha
Блин, не так сохранилось
Sasha
Минуту
Stas
А какое кстати?) Вообще по идее самому руками собирать FormData, если бэк ждёт в таком формате
в форме стоит нг-сабмит с запуском функции, у инпута дописал onchange="angular.element(event.target.form).triggerHandler('submit');
Stas
пока еще не понял что это, но оно работает