Используйте диспетчер событий прицела; $emit(name, args)
используется для отправки события до родительских областей, а $broadcast(name, args)
будет передавать события вниз по иерархии.
Чтобы поймать выброшенные события, используйте $on(name, listener)
слушателей.
Вы могли бы точно так же относятся к $scope.$parent
путешествовать вверх по цепочке (или $scope.$parent.$parent
и т.д.), но это не рекомендуется - вы должны смотреть вверх по иерархии области видимости n
уровней вверх, что делает этот код жесткой (что, если вы измените уровень вложенности области, например, добавив ng-repeat
где-нибудь?).
Вы можете также использовать включение в директиве (при необходимости) - что позволит вашей модели проживать за пределами изолированной сферы действия директивы, таким образом, позволяя естественный доступ к любому контроллеру в иерархии выше (при условии, что нет изолированный объем в пути).
См. $compile
service docs для получения информации о директивах 'tranclude
.
Благодаря Josh .. это работает – runtimeZero
о господи, твоя гораздо лучше :) –