
Sergey
20.12.2017
23:13:15
но все же....

da horsie
20.12.2017
23:13:19
https://github.com/angular/material2/blob/master/src/lib/core/option/option.ts#L91
вот, опция отдельная сука знает о том, является ли внешний компонент multiselection

Bohdan
20.12.2017
23:13:53
туповато сделано...

Google

da horsie
20.12.2017
23:14:04
либо я ничего не понимаю в дизайне, либо они что-то сделали не так

Bohdan
20.12.2017
23:14:09
не знаю, что тут нарушается, но явно хреново :D

da horsie
20.12.2017
23:14:16
вот и я так же думаю

Sergey
20.12.2017
23:14:17

Bohdan
20.12.2017
23:15:00
в нормальных компаниях за такое бьют по рукам

Sergey
20.12.2017
23:15:27
Пример - selectlist. Это набор опций, которые можно выбирать. Опции могут быть disabled, поведение может быть разное, типа multi selection list, single selection list. Есть еще компоненты вроде dropdown, которые по сути тот же лист, но чуть иначе выглядят. Как их правильно выполнить? Есть такая шутка - material design, это набор компонентов для ангуляра. там реализован selectlist, но каким-то жутким образом, например, у них есть option (единичный элемент списка), которые обладает собственным поведением и знает, является ли он частью multiselection list или singleselection list. Для меня это за гранью понимания.
у нас есть следующие компоненты:
- элемент списка - Option
- сам список, который можно конфигурить - по сути это такой вот декоратор вокруг списка опций
- дропдаун как контейнер для списка


da horsie
20.12.2017
23:15:47
и тут начинается политика. мои коллеги слепо копируют этот подход, а когда я пытаюсь возражать, меня серьезно не воспринимают потому что "ты че, это же гугол, они знают, что делают"

Bohdan
20.12.2017
23:15:48
в ангуларе есть примеси?

da horsie
20.12.2017
23:16:12

Bohdan
20.12.2017
23:16:32
на вью я делал бы примесь для логики (где она общая) и отдельные компоненты для отображения
если лист и дропдаун имеют одинаковую логику и разные шаблоны - должно сработать

Sergey
20.12.2017
23:17:13
опенсурс же

Google

da horsie
20.12.2017
23:18:16

Bohdan
20.12.2017
23:19:08
эскобар бы оценил

Sergey
20.12.2017
23:19:21
так что понижаем его просто до члена организации angular на гитхабе

da horsie
20.12.2017
23:19:56
ну кто0-то же апрувил этот ПР

Sergey
20.12.2017
23:20:01
секу

da horsie
20.12.2017
23:20:21
не суть, там такого много

Sergey
20.12.2017
23:21:00
насколько я могу судить - они чет там мутили с производительностью
ну то есть это намерянные кастыли
короч все в любом случае упирается в изоляцию
что бы изменения одного UI компонента не развалили страницу
open/close короч

da horsie
20.12.2017
23:25:34
в опциях? в отдельной модели опции? в списке?

Sergey
20.12.2017
23:27:43
а стэйта нет. Весь стэйт через биндинги

da horsie
20.12.2017
23:31:03

Sergey
20.12.2017
23:31:39
кто-то сверху
твои UI компоненты принимают что-то на вход и выплевывают что-то на ружу через ивенты (те же бингинги - колбэки)

Google

Bohdan
20.12.2017
23:32:18
в компонентах может быть только то, что относится к их отображению
данные сверху приходят

Sergey
20.12.2017
23:32:39
не нужно никаких редуксов - это уже пусть пользователь фреймворка решает как он стэйт будет хранить
и как будет на ивенты твои реагировать

da horsie
20.12.2017
23:34:10
правильно?

Sergey
20.12.2017
23:35:17
ну там MVC вся херня
VC = компонент. Он на вход принимает какие-то данные (модель), на выход плюется событиями
что бы поток данных был строго в одном направлении
что бы по изменению стэйта себя перерендрить
короч чистые функции и изоляция сайд эффектов

Aleh
21.12.2017
09:32:11
Хотя хз

da horsie
21.12.2017
09:40:43

Aleh
21.12.2017
09:41:58
В обратную сторону оч странно

da horsie
21.12.2017
09:48:54
Хотя
И в обратную тоже. У компонента есть обзерваблы его событий. Хочешь - слушай.

Aleh
21.12.2017
09:50:17

da horsie
21.12.2017
09:51:03

Google

Aleh
21.12.2017
09:52:06
В редаксе у тебя много маленьких объектов, которые в сторе объединяешь в один

da horsie
21.12.2017
09:54:40
Ну я и говорю
Будет большой Стейт компонента.
Внутри компонента ты можешь его фильтровать как то и прокидыавать составным частям компонента