@angular_js

Страница 224 из 325
des
16.02.2018
09:52:52
кто в курсе ? Медиа-запросом я не очень понимаю как это сделать, т.к. мне просто макс. ширина нужна, а девайсов много...

нужна максимальная ширина

в ландшафтной ориентации ) путано написал

извиняюсь

Google
John
16.02.2018
10:59:57
Это вопрос по верстке а не по Ангуляру

des
16.02.2018
11:01:58
разобрался, там масштаб менялся автоматом

Sasha
16.02.2018
11:52:05
Такой кейс - есть некая форма, есть модалочки. У модалочек вложенность практически бесконечная. Есть какие-нибудь способы отключить вотчеры, которые находятся в parent'ах, помимо ng-if?

Sasha
16.02.2018
11:53:39
в такой реализации что-то не то у тебя parent форма всегда открытая ?
Всегда открытая да, но данные оттуда чайлдам передаются по биндингам

Andrey
16.02.2018
11:54:06
а зачем тебе держать открытую модалку ? только ради биндингов ?

Sasha
16.02.2018
11:56:01
а зачем тебе держать открытую модалку ? только ради биндингов ?
Нет, смотри. Есть форма, там есть какая-нибудь связь, типа one2many. То есть в определенном поле открывается еще форма в модалке, в этой мoдалке может быть еще поле o2m с модалкой. То есть получается у нас есть основная форма с вотчерами, когда открываем модалку - добавляются еще вотчеры и так до бесконечности

Sasha
16.02.2018
11:58:14
one2many это не до бесконечности или у вас древовидная структура ?
До бесконечности конечно же. Допустим, есть поле с o2m, там внутри форма, в этой форме уже другое поле может быть с o2m, где тоже нужно открывать модалку.

Это ерп и там все динамически

Andrey
16.02.2018
12:02:07
До бесконечности конечно же. Допустим, есть поле с o2m, там внутри форма, в этой форме уже другое поле может быть с o2m, где тоже нужно открывать модалку.
я вам предлагаю не держать все модалки открытыми, а управлять ими через сервис в сервисе хранить стек вызовов модалок открыто будет 5 модалок, при открытии новой все смещается, т.е. 1 удаляется, добавлется в конец новая а что бы не терять состояние модалок тоже в сервисе храните вообщем эта реализации будет сложнувата, но облегчит ваш процесс вложенности

Sasha
16.02.2018
12:02:09


Bohdan
16.02.2018
12:02:30
Google
Sasha
16.02.2018
12:02:56
На скрине - это не ангуляровское приложение, а десктопное

Andrey
16.02.2018
12:03:36
да, 5 модалок это текущие открытые ( типа текущий открытый стек ), а весь стек храните рядом просто при нужной модалке, вам нужно будет ее показать и передав ее состояние при этом сохранив ее позиционирование с помощью хранения z-index

Sasha
16.02.2018
12:03:41
Ангулар, я думаю, на пятой модалке споткнется ) это же какой огромный дайджест там будет
Более того, там в каждом поле ng-required/ng-hide/ng-disabled с постоянно вычисляемым выражением.

Sasha
16.02.2018
12:04:53
Каждое поле динамически зависит от других и вычисляется с помощью специальных выражений.

Bohdan
16.02.2018
12:05:00
Более того, там в каждом поле ng-required/ng-hide/ng-disabled с постоянно вычисляемым выражением.
Вот кстати да, почему бы не хранить стэйты в стэке и по мере закрытия не возвращаться?

Скрытые компоненты не будут гнобить дайджест

Sasha
16.02.2018
12:05:46
А в интерфейсе их скрывать ng-if'ом?

Bohdan
16.02.2018
12:05:54
И вот тогда действительно можно очень глубоко в кроличью нору лезть

А в интерфейсе их скрывать ng-if'ом?
Само вью вообще убирать Это кастомную логику писать надо

Sasha
16.02.2018
12:07:09
Насчет хранений стейтов по мере закрытия - это понятно. У меня скорее вопрос, как убрать из DOM'а. Насколько я понимаю, это единственный способ убрать вотчеры

Имею ввиду специфичные, типа ng-required/...

Andrey
16.02.2018
12:08:48
$mdDialog из angular-material
свою будешь писать )

Sasha
16.02.2018
12:09:59
А как можно оптимизировать выражения в полях? Потому что даже обычная форма работает достаточно медленно

Я просто не понимаю причин, почему тормозит так. Может глупые вопросы задаю, я сам бэкенд/десктоп.

Andrey
16.02.2018
12:11:39
Bohdan
16.02.2018
12:11:40
Скорее всего, дофигище вотчеров

Google
Sasha
16.02.2018
12:13:00
А я уже старался с оптимизировать количество вотчеров, соежу за ними. Где можно - ::, односторонние биндинги, но вотчеров на форме все равно 1500, а иногда и 1900

Andrey
16.02.2018
12:14:19
а ты вотчеры удаляешь когда событие $onDestroy эмитится в скоуп ?

Sasha
16.02.2018
12:16:24
а ты вотчеры удаляешь когда событие $onDestroy эмитится в скоуп ?
Нет. Я даже и не думал, что это руками нужно делать

По поводу выражений, например вот выражение для ng-disabled: const expr = { "s": [{ "__class__": "Not", "v": { "s2": "draft", "s1": {"v": "state", "d": "", "__class__": "Eval"}, "__class__": "Equal" } }, { "s": [{"__class__": "Bool", "v": {"v": "lines", "d": [0], "__class__": "Eval"}}, {"__class__": "Bool", "v": {"v": "party", "d": "", "__class__": "Eval"}}], "__class__": "And" }, {"__class__": "Bool", "v": {"v": "lines", "d": [0], "__class__": "Eval"}}], "__class__": "Or" };

То есть там большие выражения, которые резолвятся в соответствие с текущими данными формы

И такие штуки на каждое поле

Andrey
16.02.2018
12:17:33
Нет. Я даже и не думал, что это руками нужно делать
когда ты $watch юзаешь он тебе возвращает callback который можно вызвать () и убить watcher

Sasha
16.02.2018
12:18:40
С резолвом выражений все ок, но они дергаются постоянно

Кстати, а количество дайждестов за n количество времени - важно?

У меня ощущение, что есть какой-то ботлнек

Sasha
16.02.2018
12:26:56
В общем, у меня в топе именно вотчеры, которые пораждаются выражениями для disabled/hide/required



И вот как их соптимизировать? На десктопе это вообще не было ботлнеком

Andrey
16.02.2018
12:31:52
И вот как их соптимизировать? На десктопе это вообще не было ботлнеком
попробуй написать кастомную директиву аналогичную ng-disabled правда вот тут у меня вариант один, туда прокидываешь выражение и не юзаешь вотчер, а вызываешь допустим каждые 200ms и нативно добавляешь disabled класс попробуй для 1 директивы свое решение сделать

Sasha
16.02.2018
12:33:59
Мб вообще для таких вещей ангуляржс - не самое удачное решение?(эт не я придумал его использовать) А есть смысл смигрировать?

Andrey
16.02.2018
12:35:48
Мб вообще для таких вещей ангуляржс - не самое удачное решение?(эт не я придумал его использовать) А есть смысл смигрировать?
ну с формами у angular всегда были проблемы даже у Angular 2+ ( там хоть реактивные есть ), но в шаблоне ужас все равно

Google
Sasha
16.02.2018
12:37:37
у вас все на js ?
Кастомное я писал именно связанное с ангуляром, то есть так или иначе это не чистый жс. Бэкенд - python+go(то, чем я в основном занимаюсь)

Но в последние пол года пишу еще и фронт. И прям очень больно

Andrey
16.02.2018
12:38:23
я про фронт, ну типа есть либа для TS у которой валидируется не форма, а сама модель с декораторами

Sasha
16.02.2018
12:39:37
Здесь тоже можно делать :: биндинг
Да, но они же должны постоянно резолвиться

Поменял одно значение - вся форма поменялась

Bohdan
16.02.2018
12:41:47
А Беда тогда

Andrey
16.02.2018
12:42:46
Sasha
16.02.2018
12:42:56
Bohdan
16.02.2018
12:44:06
Пайпы какие то используешь?

Sasha
16.02.2018
12:45:59
Andrey
16.02.2018
12:46:37
фильтр

Sasha
16.02.2018
12:47:14
Фильтры не использую, они ж адски томрозят

Bohdan
16.02.2018
12:48:09
Хм Ну тогда без исключений только код смотреть, по другому финиш фиг чем поможем

Иван
16.02.2018
13:02:26
в какой-то момент первый просто отказался работать из-под даунгрейженых компонентов а2+ это как вообще, из-под?
это была одна из первых, неудачных, попыток... зашли не с той стороны, посему получилась ситуация ui-view оказалась внутри a2+ компонента, при даунгрейде не работала...

в какой-то момент первый просто отказался работать из-под даунгрейженых компонентов а2+ это как вообще, из-под?
так же совместно работающие роутеры не могли определиться кто должен обслуживать рефреш страницы и ручное изменение урла... т.е. вроде как линки в самом приложении работали, однако если в ручную ввести урл или зарефрешить страницу в ui-view/outlet не заполнялся... я думаю если покапаться, можно было как-нибудь донастроить с бубном и такой-то матерью, но прям большого желания не было. и если в разработке, это вроде как не очень больно, то ни о каком продакшн варианте вообще не могло идти речи... как люди в гибриде уходят в прод, даже не представляю. возможно стоило изначально мигрировать на ui-router для а2+ (может бы глаже прошло), а потом на нативный роутер, не знаю.

Иван
16.02.2018
13:26:07
Странно у нас довольно гладко. Роутинг полностью ui-router нг1 обеспечивает и все норм.
ну пока роутингом рулит ui-router может оно и работает, хотя как я уже написал, что нет... но вы же в какой-то момент начнаете перебрасывать роуты на анруляровский роутер, вы же не можете все 100500 роутов единовременно перебросить

Google
Kim
16.02.2018
14:35:48
привет, у кого то есть приложение ,где используется angular google maps? если да, то не вылетали ли ошибка такого рода TypeError: Cannot read property 'removeChild' of null at MarkerLabel_.onRemove ?

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

Yuriy
16.02.2018
16:50:20
ребят, помогите, как с директивы узнать, что material tabs подгрузилась полностью ? мне надо просчитывать координаты, высоту, ширину. window.onload не подходит, есть ли аналог mdTabs.onLoad ?)

Remite
16.02.2018
16:51:38
Странное требование, а Вам зачем?

Yuriy
16.02.2018
16:55:40
хочу пересчитать позицию елемента на странице, но считать я ее могу только послке того как он полностью прогружен

получается, что у меня все всегда работает, кроме тех случаев, когда таба динамически кидается, тогда onload не срабатывает и мне бы нативные вещи узнать, как люди узнают, что элемент полностью прогружен и присутствует на странице

Remite
16.02.2018
16:56:54
$timeout без второго параметра попробуйте в своей директиве

Нативная джс апишка не позволяет узнавать состояние дом узлов к сожалению

Yuriy
16.02.2018
16:57:59
рано)

material tabs загружается позже моего таймаута

Andrey
16.02.2018
17:00:50
material tabs загружается позже моего таймаута
я тебе предложу костыль, но у тебя будет разметка внутри tab так вот, добавь туда ng-init и добавь вотчер на инициализацию этой переменной и событие вызывай но это очень и очень плохо, хреново конечно такие советы давать

Yuriy
16.02.2018
17:01:30
Я и это уже видел) и рекурсивный вызов в $watch пока не будут offset().left у элемента))

Andrey
16.02.2018
17:01:52
Я и это уже видел) и рекурсивный вызов в $watch пока не будут offset().left у элемента))
почему рекурсивный ? можешь на ng-init вызывать метод вот точно метод

Yuriy
16.02.2018
17:02:27
сейчас попробую)

Капитан
17.02.2018
11:27:14
Всем привет. Подскажите пожалуйста. У меня есть директива, которая выравнивает блоки между собой при определённых условиях. Проблема в том, что на странице блоки меняются без перезагрузки страницы, соответственно не пересчитывается высота. Можно ли как то вызывать директиву по клику? Тайм-аут не подходит, он может поломать мобилку.

Andrey
17.02.2018
11:35:37
Всем привет. Подскажите пожалуйста. У меня есть директива, которая выравнивает блоки между собой при определённых условиях. Проблема в том, что на странице блоки меняются без перезагрузки страницы, соответственно не пересчитывается высота. Можно ли как то вызывать директиву по клику? Тайм-аут не подходит, он может поломать мобилку.
в директиве я так понимаю есть какой-то параметр с помощью которого делается условие так вот, вам нужно наблюдатель за этим свойством и при изменении свойства просто пересчитывать высоту $scope.$watch('property', (val) => { recalculateHeight(val); }); как-то так обобщенно

Andrey
17.02.2018
11:37:44
Спасибо большое сейчас попробую.
почитайте про вотчеры в angularjs и да, не забывайте их удалять

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