Denis
Как-то можно вызвать функцию, если в formy что-то меняется?
Denis
formly*
Sergey
> templateOptions: { onChange: function($viewValue, $modelValue, $scope) { //implement logic here }; }
Sergey
Так, не?
Sergey
А в чём фича формли?
Sergey
Просто, любопытно, уже второй раз слышу, хвалят, интересно.
Demyan
Подскажите как можно отдебажить angularjs код? Типо есть работающий сайт, я хотел бы поставить брейкпоинт, и нажать допустим кнопку и чтобы обработчик попал на ту функцию куда нужно и я мог попереходить по функциям и отдебажить то есть я типо не могу понять ветку исполнения кода при событии определенном
Stas
Я консоль логами всё дебажу, а есть другие варианты? 😳
Sergey
Ну как, через source в инструментах разработки ставите бряк и вперёд, нет?)
Sergey
Ну или в коде debugger;
Sasha
Я в пайчарме дебажу. А большинство в браузере
Sergey
Или вам надо в IDE?
Sasha
Фигачишь брейкпоинт в браузере и все, главное сорцмапы
Demyan
я не знаю где функция искомая
Demyan
сайт не совсем мой
Demyan
мне надо отдебажить как происходит валидация параметра
Demyan
чтобы себе подобное сделать
Sergey
Ну название хоть функции знаете? В девтулзах хрома есть поиск по сырцу
Sergey
А там уже бряк и вот это всё
Sergey
https://chrome.google.com/webstore/detail/angularjs-batarang/ighdmehidhipcmcojjgiloacoafjmpfk
Sergey
Посмотрите это ещё
Sergey
Может проще про сам валидатор тут спросить?)
Sergey
там 50к строк
Вы так говорите будто лично сами искать будете)
Demyan
Ну судя профайлеру там дофига функций выполняется
Demyan
а так как это angular я понимаю оно в браузере на клиенте все выполняется
Sergey
Логично
Sergey
Но что из выхлопа профайлера относится к валидации - не факт что очень просто понять можно будет
Stas
ребят, а перед каждым запросом проверять авторизован ли юзер это норм?
Stas
точнее аутентифицирован ли
Stas
примерно что-то вот такое хочу вставить в каждый запрещённый клик vm.isLoggedIn = authentication.isLoggedIn(); if (!vm.isLoggedIn) { $state.go('login'); return; }
Sergey
А зачем ты вообще активной/видимой кнопку делаешь для тех кому её видеть/нажимать нельзя?
Sergey
Ну просто у тебя такого вот кода будет МНОГО и везде
Sergey
Защищай маршруты лучше
Stas
Ты прав в этом плане, только у меня идёт начальная страница, это страница действий. Если я на ней всё спрячу, она будет пустая.
Stas
маршруты защищены
Stas
все возвращают 401
Stas
просто что б не отправлять запрос, я могу проверить до отправки
Sergey
Не, они должны реджектить если не авторизован/залогинен
Stas
ну правильно
Stas
это почти такой же кусок кода, только в другом месте
Stas
вместо этого if (!authentication.isLoggedIn()) { $state.go('login'); return; }
Stas
нужно это if (err.status === 401) { $state.go('login'); }
Stas
только разница в том, что запрос даже не будет отправляться
Stas
а то мне не нравится что в консоли накапливаются 401 😂
Sergey
Так ты и в роутах не обязан лазить в бэк
Sergey
Ну хотя бы в сервис эту свою функцию проверки вынеси, чтобы код не дублировать
Stas
проверка и так в сервисе
Stas
authentication это сервис
Stas
isLoggedIn это функция в нём которая возвращает тру/фолс
Stas
до бэка у меня почти не доходит, вот на этой стадии идёт возврат запроса router.put('/board/:boardid/lists', auth, ctrlBoard.updateBoard); который попадает в кэч
Sergey
вместо этого if (!authentication.isLoggedIn()) { $state.go('login'); return; }
Ну у тебя вот этот кусок будет кочевать по всему проекту
Sergey
В принципе ничего страшного
Sergey
Но давай представим что ты решил переименовать функцию IsLoggedIn
Sergey
А у тебя не тайпскрипт :D
Stas
то это конец
Stas
карьере разработчика
Sergey
Придётся судоку совершать
Stas
я люблю судоку
Stas
точнее любил, пока не узнал метод решения
Sergey
Мы как-то отклоняемся. Ну просто ты вопрос так ставишь, а нормально ли это. Ну раз надо, то нормально
Stas
а вот какие варианты есть?
Sergey
Зависит
Stas
ну если это считается говнокодом, то можно поискать другие варианты
Sergey
Да какая разница, правда. Ты всё равно через год сам посмотришь на старый код и захочешь себе прошлому пинков надавать
Sergey
Ну то есть нет однозначно правильного решения на все времена, выбери приемлемое
Stas
понятно, спасибо
Stas
но всё же)
Stas
как ты запрещаешь не авторизованным что-то делать
Stas
помимо прятанья кнопки (вариант хороший, но не для меня)
Sergey
Я-то это делаю через жалкое подобие гвардов в маршрутах и ng-if/ng-show в шаблонах, там где те кому не надо не могли бы своими грязными неавторизованными руками лазить
Sergey
Ну то есть у меня нет задачи показать юзеру сайт а потом мвахаха гото логин
Sergey
Неавторизованный юзер вылетит на логин сразу при переходе на маршрут
Sergey
На любой
Sergey
А там проверяются локально сохранённые данные аутентификации, т.е. если они пустые то маршурт реджектит, а в общем обработчике ошибок маршрутизации проверяется почему юзера послали и если потому что он неизвестен или не туда полез, то оттуда уже гонят его в логин
Sergey
В твоей проверке плохо ещё то что всякий кто её использует получает зависимость от $state
Sergey
То есть я бы весь твой if спрятал бы в метод сервиса
Sergey
Или бы вообще извернулся и декторатором проверку сделал бы
Sergey
Ну это уже вопросы кодстайла