Максим Дунаевский: ну так сделайте отдельную директиву, которая будет загружать данные а внутри используете любое готовое дерево. Принцип единой ответственности и все такое.
Максим Дунаевский: директива для вывода дерева не должна отвечать за подгрузку данных, вот и все. Добавьте ивенты/колбэки вызываемые при раскрытии элементов и т.д. или еще как, но за загрузку данных должен отвечать другой уровень. А с рекурсиями проблем нет, если избавиться от явной рекурсии.
Павел Кононенко: аргументируйте, что именно вы считаете не правильным, не использовать независимые контроллеры? Дробить UI на директивы, делать все директивами? Изолировать директивы от инфраструктуры (uiRouter, etc) дабы проще было покрывать все тестами?
Павел Кононенко: директива не может быть лишней прослойкой, и не в областях видемости вопрос. Вопрос в том как влиять на метатеги. Директивы для этого подходят идеально, причем при таком подходе контроллеры вообще не затрагиваются. У меня вот контроллеров почти и нет (я имею в виду вот этих полу-глобальных независимых штук которые вешают на стэйты обычно), все все в директивах со своими контроллерами.
Дмитрий: я полагаю что это были либо разные люди либо все эти вещи просто упоминалиь. Хотя в принципе это возможно, если чувак может рассказать на конференции что-то по GO и что-то по Objective C, то освоить какие более схожие вещи (ReactJS, Angular) что бы о них тоже что-то рассказывать тоже не проблема. Важно уметь видеть общую картину и уметь абстрагироваться от деталей.
copal: ну если у вас выходит ад из вложенных функций это чисто ваша проблема, у меня как-то таких проблем нет. Более того, замыкания есть и в Java и в любых других нормальных языках, по сути те же вложенные функции.
Что до геттеров и сеттеров - вопрос в месте применения. Для моделек это плохо, для чего другого - норм. Вопрос в подходах, не писать сеттеры стало модно где-то с 2004-ого, когда Эрик Эванс навал форсить подход с DDD.
Siarhei Pashkevich: сервис это хорошо но так же легко сделать очень плохо. Чуть лучше чем с ивентами (ибо это явно) но хуже чем просто отказаться от этой затеи. В вашем случае все решается переопределением блока в дочернем состоянии. И тогда передавать никому ничего не надо.
copal, по поводу "нет ООП и вложенные функции порочат ООП" вы в корне не правы. Просто объектная модель к которой вы привыкли и то что есть в JS отличается.