Как лучше всего связать два компонента Angular?

0

В настоящее время я работаю над приложением, созданным с помощью Angular 1.x, и я хотел бы знать, какая из лучших практик заключается в том, чтобы сообщать о двух разных компонентах, которые изначально работали отдельно в другом модуле приложения. Один из них - селектор, а другой - слайдер.

В принципе, селектор является директивой с функциональностью, определенной в ссылке. То же самое для слайдера. Идея состоит в том, чтобы обновлять слайдер новыми элементами каждый раз, когда я нажимаю один из вариантов (ng-click) в селекторе.

Это первый раз, когда я должен реализовать эту коммуникационную концепцию в Angular, и я не знаю, лучше ли работать с внешним сервисом, беря и сохраняя данные от обоих компонентов, используя события или контроллеры внутри директив. Любые рекомендации приветствуются.

РЕДАКТИРОВАТЬ:

Здесь я показываю фрагмент кода моей директивы селектора. В основном, я хочу изменить свойство выделения, когда в ссылке есть ng-click (my toggle()):

angular.module('ngExploratory')
 .directive('xplrSelector', (PATH, XplrBaseObject, IdentifierService, DataService) ->
templateUrl: "#{PATH}components/selector/selector.html"
restrict: 'E'
replace: true
transclude: true
scope:
  xplrId: '@'
  xplrJoin: '='
  headers: '='
  content: '='
  limit: '='
link: (scope, element, attrs) ->
  XplrBaseObject.extend scope, element, attrs
  scope.data = {} if not scope.data?
  scope.toggle = () ->
    scope.id = IdentifierService.initialize element
    scope.value = DataService.get scope.id
    scope.data.selected = !scope.data.selected
    scope.commit()
  return
)

Затем, как только этот клик/выбор будет выполнен, я хочу запустить и инициализировать свой компонент слайдера (код для этого слишком длинный...). Все функциональные возможности ползунка снова определены в ссылке в директиве. Тогда нет контроллеров.

  • 0
    Один из способов сделать это - общая область видимости и область видимости. Можете ли вы поделиться своим кодом для подробного объяснения
  • 0
    Эти компоненты используют разные контроллеры?
Показать ещё 2 комментария
Теги:

1 ответ

1
Лучший ответ

Лично я предпочитаю использовать службы для совместного использования данных (и потенциального поведения). Если возможно, я стараюсь использовать API службы и использовать события в качестве крайней меры. Но, конечно, каждый сценарий отличается... :-)

  • 0
    Спасибо! Я уже начал работать над сервисом с различными функциями, чтобы получать данные из одного компонента, затем сохранять их, а затем - из другого. Это кажется более знакомым, чем события на данный момент ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню