Rem1te
Dima
ну нажатие кнопки например
Dima
просто если в контроллере обьявлять, то наверное надо при $destroy чистить прослушку, а сервис же один раз инитится, думаю может принято в них делать
Rem1te
в темплейте нажатие кнопки
Dima
нажатие кнопки клавиатуры*
Rem1te
в компоненте в котором нужно обрабатывать
Алексей
Есть задача в зависимости от данных в scope показывать компонент(название компонента приходит из вне, может быть произвольным). Как бы вы решали эту задачу?
Stas
Всем здарасте. Подскажите есть чекбокс в репите если он по данным БД чекнут т.е. срабатывает ng-checked и я его анчекаю то в метод при клике отправляется undefined из за того что ng-model на сколько я понимаю не установлена никак при первоначальной инициализации, пробовал через ng-init но тоже почему то непоулчаю значение чекнутого чекбокса.
Stas
Rem1te
Rem1te
бля
Rem1te
мастер йода
Алексей
Stas
оно может с бд прийти как и тру
Stas
смотря что ранее было сохранено
Rem1te
оно может с бд прийти как и тру
очень странно говорить о БД в чате про фронт :)
не с БД а с бека :) и значит где-то значение должно хендлиться,
а дальше тебе просто нужно поместить твое значение в переменную которая завязана на нг-модел
Алексей
оно может с бд прийти как и тру
ng-init не про состояние компонента, а про определение или изменение scope
<input type="checkbox" ng-model="checkboxModel.value2"
ng-true-value="'YES'" ng-false-value="'NO'">
попробуй по аналогии с примером https://docs.angularjs.org/api/ng/input/input%5Bcheckbox%5D#examples .
т.е. тебе не нужны ng-checked, ng-init
Алексей
Rem1te
Rem1te
дык что да, Вы можете создавать скоуп в компоненте и отдавать его на растерзания новому собранному компоненту
Sasha
Всем привет. Предположим, есть форма с 30 полями. У каждого из них есть динамическое выражение(или несколько):
… x20
<field ng-disabled=“expression” ng-if=“expression” ng-required=“expression”/>
Выражения резовятся и в итоге каждое поле динамически меняет свой статус, в зависимсти от данных формы.
Это продуцирует какое-то нереальное количество вотчеров и все дичайше тормозит. Собственно вопрос: почему и как можно оптимизировать? p.s. подобная схема вполне нормально работает с вью или реактом, я проверил =)
Константин
Алексей
Sasha
Скорее даже так:
<field ng-disabled=“vm.resolve(expression)” ng-if=“vm.resolve(expression)” ng-required=“vm.resolve(expression)”/>
И если посмотреть, то он дергает постоянно в этих местах дайджест, при том, что данные формы не менялись
Rem1te
Алексей
Rem1te
Rem1te
Sasha
Rem1te
у меня тут недавно на проекте было 70*12*4 полей
и все с нг-моделами
Rem1te
я плакал, а заказчик сказал что пойдет
Rem1te
ну и я такой ¯\_(ツ)_/¯
Sasha
Ну то есть в рамках ангуляржс решения не существует?
Константин
у тебя не такие уж жесткие условия, не должно тормозить, рили)
Константин
В крайнем случае напиши директивы для полей, которые будут управлять их значениями по ивенам
Nikolai
Nikolai
и в этой записи ng-required с тем же значением, что ng-if лишнее
Nikolai
Константин
Условия жёсткие на самом деле, я просто описал схематично кейс. Формы динамические и может быть и 100 полей
ну я просто сравниваю с нашим проектом.
у нас на продуктах можно настроить кастомизацию в билдере, добавить форме пейджи, коллапсы и поля. Поля могут просто лежать, могут лежать в коллапсе и могут лежать в пейдже. Коллапсы могут просто лежать, могут лежать на пейдже. Ну и все в таком духе.
Полей тоже может быть много. У них есть кондишены — строковые условия в стиле "показывать поле, если в <имя_поля> введено <значение>" и тд. Все это телегу он резолвит на ходу.
Валидация тоже имеется, тоже с наворотами
А еще есть external fetch, который из себя представляет настройку для полей, которая делает следующее — при изменении полей, у которых настроена галочка, нужно обратиться к серверу, он сходит по ссылке из настроек поля, заберет новые поля или настройки полей с из удаленного сервиса и вернет их фронту, который в свою очередь обновит форму
И вся эта телега (кроме реквестов на бэк, которые по природе не сделать быстрее определенного порога) работает моментально
Константин
Думаю у нас с тобой примерно одинаковые кейсы, но у нас почему то вообще не лагает, а тебя прям тормозит
Константин
Значит вопрос в реализации, а не в ангуляре
Sasha
ну я просто сравниваю с нашим проектом.
у нас на продуктах можно настроить кастомизацию в билдере, добавить форме пейджи, коллапсы и поля. Поля могут просто лежать, могут лежать в коллапсе и могут лежать в пейдже. Коллапсы могут просто лежать, могут лежать на пейдже. Ну и все в таком духе.
Полей тоже может быть много. У них есть кондишены — строковые условия в стиле "показывать поле, если в <имя_поля> введено <значение>" и тд. Все это телегу он резолвит на ходу.
Валидация тоже имеется, тоже с наворотами
А еще есть external fetch, который из себя представляет настройку для полей, которая делает следующее — при изменении полей, у которых настроена галочка, нужно обратиться к серверу, он сходит по ссылке из настроек поля, заберет новые поля или настройки полей с из удаленного сервиса и вернет их фронту, который в свою очередь обновит форму
И вся эта телега (кроме реквестов на бэк, которые по природе не сделать быстрее определенного порога) работает моментально
Да у меня тоже есть хуки, которые делают запросы к бэкенду при определенных условиях и меняют значения полей
Nikolai
Sasha
Я попробую это сделать, посмотрим, как себя поведет
Константин
Да, как сказали выше, n-show вместо ng-if действительно делает все быстрее
Nikolai
Sasha
Константин
где как
Константин
сейчас гляну интересные моменты
Константин
у нас еще вот какой прикол: кастомизация продукта может быть создана как форм-билдером (самописным), так и обычным html. но чтобы он работал с ангуляровским контроллером на самом продукте — нужны директывы.
В итоге у нас для каждого "бизнес" аттрибута полей есть директива, которая отправляет значение в контроллер
Константин
собственно это еще сильнее все усложняет, но тем не менее ничего все равно не глючит :D
Sasha
Ну у меня так же, просто это компонент, который всю логику внутри инкапсулирует и цепляется в форме
Константин
Недавно заказчик прислал хорошую новость о том, что html кастомизаций на проде больше нет, и скоро будет выпилитьвать эту дичь с директивами для аттрибутов — будем все по человечески делать через ангуляр
Константин
Константин
А на контейнер для этого поля вешается ng-show="setShowCondition('@(Model.Name)')"
Константин
который чекает по так называемой condition string условия для показа/скрытия исходя из значений других полей
Sasha
Кейсы практически 1 в 1. У меня так же есть и скрываемые секци, в зависимости от данных формы. И формы генерируются на бэке
Константин
Да, действительно похоже на то, о чем ты говоришь
Собственно я это все описал для того, чтобы подтвердить то, что формы могут быть нагруженными, но работать адекватно
Константин
И вроде у нас нет никакого дрочева производительности
Зато есть жирнющий контроллер, который давно пора покромсать, ибо там уже неадекватно много кода)
Sasha
Вот еще вопрос созрел, в тулзах для проверки вотчеров - больше всего отжирает ‘fn’. Что это вообще?
Константин
Думаю, это обертка какая-то
Константин
что-то подкопотное
Константин
Sasha
Ну как?
Пока еще руки не дошли, по бэкенду таски доделываю =)
Nikolai
Ну хорошо. Кто комбинировал драгендроп-сортировку с виртуальным скролингом?
Алексей
С наступающим!
Как сделать так, чтобы шаблон ком понента заменил директиву, не падал внутрь
Rem1te
никак, это было возможно только на директиве и это теперь незаконно
Алексей
01
Ребята, ни у кого не было проблем с установкой Angular Cli?
Пробую поставить это плюху, но npm бросается ошибками EISDIR.
-- Вот так пытаюсь поставить.
sudo npm install -g @angular/cli
-- Лог ошибок огромный. Как пример:
npm WARN tar EISDIR: illegal operation on a directory, open '/tmp/npm-20299-55aa9c6e/unpack-08b661a4/build/Release/obj.target'
npm WARN tar EISDIR: illegal operation on a directory, open '/tmp/npm-20299-55aa9c6e/unpack-08b661a4/build/Release/obj.target/fse'
-- Происходит эта беда именно когда я пытаюсь глобально установить Анг. При этом другие модули npm без проблем ставит.
-- Версии софта
node v8.12.0
npm 6.5.0