Показать сообщение отдельно
  #13 (permalink)  
Старый 16.06.2013, 12:25
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Цитата:
Подскажите как можно сделать из Скопа - функцию чтобы внутри нее можно было вызывать другие Скопы и с ними работать.
Присоеденяюсь к Shitbox. Сделать так можно но делать этого не стоит.

Нужно стремится по возможности к слабому связыванию компонентов. Это аксиома проектирования в любом языке, любом фреймворке, не зависимо от того какую программу вы пишете.

Из красивых решений это атрибуты директив, либо события. Атрибуты деректив это в каком то смысле шлюзы компонентов, и через такие шлюзы можно относительно безопасно состыковывать компоненты UI между собой.

Можно иметь общие данные для обсолютно независимых котролов и деректив, но придётся их хранить в сервисе и подключать сервис там где нужен доступ к этим данным. Вместе с данными в сервисе желательно хранить и методы обработки этих данных, такие методы можно будет вызывать из любого контрола где используется этот сервис (в 7ом посте писал об этом). Сделать сервис частью scope тоже труда не составляет.

Сервис конечно не обеспечивает синхронизацию данных между различными компонентами, иными словами если один контроллер изменит данные в сервисе, то другой контроллер об этом изменении не узнает. Если нужна синхронизация то в качестве решения может проканать rootScope. Но так как обьект глобальный то злоупотреблять им не стоит, если всё пихать в rootScope то при изменении одних данных будет дёргаться слишком много лишних обработчиков watch. Довольно плохо если объекты и свойства в rootScope будут создаваться не централизованно а размазано по различным контроллерам, такое приложение будет сложно понимать.

Из любопытных идей мне на ум приходит создание сервиса со своим cобственным scope. Такой финт позволит сочетать преимущества сервиса, с возможностью синхронизации при изменении данных при этом избегая универсального глобального объекта $rootScope. Получится что то вроде "активной модели". Однако в angular потребности в подобных инструментах у меня пока не возникало.

Собрать же кучу скопов различных компонентов в одной функции это возможно худшее из всех возможных решений.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 16.06.2013 в 14:25.
Ответить с цитированием