@angular_js

Страница 241 из 325
Nikolay
18.04.2018
05:06:57
Суть в том чтобы не писать 2 раза me.loader.finish() ?

Vladislav
18.04.2018
05:07:08
В целом да )

Nikolay
18.04.2018
05:07:38
вариант на втором скрине выполнить finish только в случае с resolve

Vladislav
18.04.2018
05:07:38
ну и суть в том что у ресурса в методе гет нету стандартного get приходится прикрутить промис, может есть запись поумнее

Google
Andrey
18.04.2018
05:07:52
В целом да )
написать interceptor для лоадера только он будет глобальный еще как вариант сделать свой сервис для http и туда передавать параметры, а нужно ли показывать лоадер это учитываешь в intercetor`e

Nikolay
18.04.2018
05:08:45
или как то так Resource().get().$promise.then().catch().finally();

и в finally запихать вызов

Vladislav
18.04.2018
05:09:04
Да правильнее согласен про свой сервис

в рамках текущей проблемы интересно как будет более грамотнее

Resource().get().$promise.then() разве не сработает после выполнения ?

зачем catch finally ?

Или я путаю что то :(

Andrey
18.04.2018
05:10:30
Resource().get().$promise.then() разве не сработает после выполнения ?
catch для отлавливания ошибки finally будет отрабатываться всегда после завершения запроса или ошибки вроде так но могу ошибаться

Nikolay
18.04.2018
05:10:33
так тут второй функций catch идет, где display_http_err

http://joxi.ru/p27aJW7s0Mx7Dr вот сократить надо запись

а колбеки это плохо)

Vladislav
18.04.2018
05:11:46
т.е если в запросе будет ошибка и я использую $promise.then то я туда не попаду ? )

Google
Nikolay
18.04.2018
05:11:55
ага

Vladislav
18.04.2018
05:11:55
ну на самом деле быстрее будет уже просто проверить)))

Nikolay
18.04.2018
05:12:37
при ошибках запроса идет в catch

Vladislav
18.04.2018
05:23:52
Спасибо всем

Евгений
18.04.2018
07:11:25


Привет, ребят хотел спросить, как можно обработать с помощью ангуляра фокус скролла? Сейчас объясню: есть фильтр, который находится слева, как навигационная панель. Там несколько инпутов. И есть скролл. Но так же скролл есть и на всей странице, само собой. При скролле в этом фильтре, получается что в 50% фокус пробрасывается на основную страницу, и поскольку контейнер фильтра должен быть fixed, он отрывается от шапки и катится вниз вместе со скроллом основной страницы.



и как бы абсолютом решается, но опять же мне говорят фиксед оставлять

можно ли через ангуляр как то повлиять на фокус

потому как через css я немного связан

top: 0\left: 0 на фиксд не подействует никак

Dmytro
18.04.2018
07:56:56
Ребят обьясните как можно создать такую простую директиву, чтобы она применялась к атрибуту инпута и элемент к которому применяется данная директива делала примерно такой код document.getElementById("test").onclick = function() { this.select(); };

Dmytro
18.04.2018
08:31:05
Спасибо я нашел решение)

Stas
18.04.2018
09:56:52
ребят, подскажите как вы выводите ошибки пользователю, отправляете ли вы те что приходят из бэка или свои выдаёте?

Max
18.04.2018
09:57:44
status code

Константин
18.04.2018
09:58:23
ребят, подскажите как вы выводите ошибки пользователю, отправляете ли вы те что приходят из бэка или свои выдаёте?
Когда как Если ошибка случилась в результате работы на бэке - то можно вернуть с бэка (меньше связанности бэка и фронта) Если ошибка касается валидации и тд - то текст ошибки в js хранится

Andrey
18.04.2018
09:58:40
ребят, подскажите как вы выводите ошибки пользователю, отправляете ли вы те что приходят из бэка или свои выдаёте?
interceptor, а потом смотрю по коду ошибки, 422, там массив ошибок, а в нем массив с конкретными ошибками к ошибке ну типа [ name: [ required: 'filed "name" required' ] ]я писал свой сервис для http, и если я ему передаю параметр специальный, то он не будет обрабатывать ошибки тогда можно будет делать что угодно в catch

Stas
18.04.2018
09:59:01
status code
а кроме статус кода? пользователю же эти цифры ничего не скажут

Когда как Если ошибка случилась в результате работы на бэке - то можно вернуть с бэка (меньше связанности бэка и фронта) Если ошибка касается валидации и тд - то текст ошибки в js хранится
но на бэкэ же может быть сообщение типа не нашёл айдишник такой в базе, это обрабатывается для пользователя или же так и отдаётся?

Google
Max
18.04.2018
10:00:16
на основание статус кода делать свой месседж

Константин
18.04.2018
10:00:24
но на бэкэ же может быть сообщение типа не нашёл айдишник такой в базе, это обрабатывается для пользователя или же так и отдаётся?
технические ошибки надо в лог возвращать, а не юзеру но на основе них можно вернуть нормальный текст

Andrey
18.04.2018
10:00:28
но на бэкэ же может быть сообщение типа не нашёл айдишник такой в базе, это обрабатывается для пользователя или же так и отдаётся?
понимаешь, тут ведь еще должны правильные http code тебе прийти у них может быть под ошибки как у java spring

все что не для юзера - sentry

Stas
18.04.2018
10:02:00
понимаешь, тут ведь еще должны правильные http code тебе прийти у них может быть под ошибки как у java spring
ну стандартный же код ошибки 404, есть еще там вроде 400 для не авторизованного, на этом в принципе всё)

Andrey
18.04.2018
10:02:14
Stas
18.04.2018
10:02:25
Andrey
18.04.2018
10:02:44
еще 403

Andrey
18.04.2018
10:03:14
в зависимости от кода + внутренний код от сервера и ошибки

Stas
18.04.2018
10:04:02
да нифига, это если проект маленький есть 200, 204, 201, 300, 401, 404, 500
ну 200, 201, 204 не касается же ошибки, это просто код ответа

Remite
18.04.2018
10:04:03
Обсуждаем с беком кто будет генерировать ошибки, обычно АПИ возвращает человекочитаемые ошибки если ошибок нет - то есть заготовленный набор ошибок на коды ответа Все индивидуально Например валидацию бек возвращает просто массив невалидных полей и на фронте уже их подсвечиваем и выводим сообщение что следующие поля не валидно заполненные

Andrey
18.04.2018
10:04:32
ну 200, 201, 204 не касается же ошибки, это просто код ответа
да это так, но суть думаю ты понял мою

как выше говорят это индивидуально под проект

но лучше так не запариваться если у вас открытое API там нужно смотреть на стандарты

Stas
18.04.2018
10:07:15
всем спасибо, примерно логику уловил

Ребятки, подскажите как можно после выбора файле без кнопки сабмит отправлять форму? Форма должа запустить функцию, я сейчас делаю через нг-сабмит.

всё, нашёл решение

Sergey
18.04.2018
11:27:31
А какое кстати?) Вообще по идее самому руками собирать FormData, если бэк ждёт в таком формате

Sasha
18.04.2018
11:30:10
Блин, не так сохранилось

Google
Sasha
18.04.2018
11:30:21
Минуту

Stas
18.04.2018
11:30:54
А какое кстати?) Вообще по идее самому руками собирать FormData, если бэк ждёт в таком формате
в форме стоит нг-сабмит с запуском функции, у инпута дописал onchange="angular.element(event.target.form).triggerHandler('submit');

пока еще не понял что это, но оно работает

а, для бэка у меня в сервисе собирается

Sergey
18.04.2018
11:32:33


Stas
18.04.2018
11:32:54
мне нужно было именно на странице понять как сделать автоотправку, что б не тыкать кнопку сабмит

да не, собирается там всё через FormData

Sergey
18.04.2018
11:33:51
Это как, форму отправлять не по клику просто, по другому триггеру?

Stas
18.04.2018
11:34:26
я ж сказал еще не разобрался, просто в гугле нашёл решение, теперь эта форма запускается когда я выбираю файл

типа автосабмит формы

Sergey
18.04.2018
11:34:41
Ну ты сейчас селектишь дом-объект формы и вызываешь у неё обработчик submit

Stas
18.04.2018
11:35:01
отлично, то что нужно)

вот сборка формы let fd = new FormData(); fd.append('х', х); fd.append('у', у); fd.append('fileName', file); return $http.post(`/йцу`, fd, { transformRequest: angular.identity, headers: { 'Content-Type': undefined } });

Sasha
18.04.2018
11:37:37
Вот, просимулировал. На говнокод не смотрите, я взял чужой планкер и допилил. Почему с первого клика, в значение из коллбэка промиса не меняет значение в темплейте? https://plnkr.co/edit/50PNiyuLCUXk9MuId5Ri?p=preview

Stas
18.04.2018
11:37:40
я может перемудрил, мне форма как таковая не нужна, мне нужно что бы инпут просто запускал функцию после выбора файла

Sergey
18.04.2018
11:50:23
Почему так происходит я не знаю, но руками трогать scope.apply нужно осторожно.

Sasha
18.04.2018
11:51:48
Почему так происходит я не знаю, но руками трогать scope.apply нужно осторожно.
https://stackoverflow.com/questions/42126615/es6-promise-not-updating-angularjs-dom?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

Вот нашел

Google
Sergey
18.04.2018
11:53:03
Кстати там же дальше через $q.when, вроде чище выглядит, пробовали?

Проверил с $q, вроде работает с первого раза

Stas
18.04.2018
13:08:05
Ребят, как вы отслеживаете клик за пределами какого-то блока? Нашёл библиотеку ng-click-outside, она без проблем всё закрывает, только когда я еще раз нажимаю на кнопку, где по логике должно быть тоже закрытие окна, из за клик аутсайд и повторного клика кнопки ничего не происходит.

точнее эту библиотеку angular-click-outside

еще есть идея проверять клик на заднем фоне, если окно открыто и по каким-то условиям не нажимается кнопка, то закрывать его, но так описывать каждое дроп меню накладно

нашёл более удобную библиотеку, если кому нужно https://github.com/IamAdamJowett/angular-click-outside

там можно вешать айди на кнопку и её будет игнорировать

Константин
18.04.2018
14:33:44
ты используешь ангуляр - там тысячи фоновых событий, твой листенер ни на что не повлияет, даже если будет 50 менюшек на странице

Константин
18.04.2018
14:36:15
еще есть идея проверять клик на заднем фоне, если окно открыто и по каким-то условиям не нажимается кнопка, то закрывать его, но так описывать каждое дроп меню накладно
любой клик сопровождается всплытием события ОТ target (куда нажали) вверх ДО document - твой листенер просто ловит его, поэтому нагрузка супер маленькая

Stas
18.04.2018
14:36:18
может модалку посмотришь как сделали?)
Не понял идею) У меня своя модалка)

Stas
18.04.2018
14:37:46
а зачем?
там много данных нужно было в модалку передавать, а так у меня есть доступ к ним, в общем мне свою было проще сделать)

Bohdan
18.04.2018
14:38:28
там много данных нужно было в модалку передавать, а так у меня есть доступ к ним, в общем мне свою было проще сделать)
в чем проблема не передавать данные, а написать отдельный компонент и отображать его в модалке?

ngDialog нормас справляется с твоей задачей

а ты свои велосипеды делаешь

Stas
18.04.2018
14:39:52
ngDialog нормас справляется с твоей задачей
на это честно не натыкался, у меня данные полученные из базы в главном контроллере, для модалки нужно было их передать или опять делать запрос в базу

Страница 241 из 325