Итак, в конце я создал родительский компонент, который имеет языковой стандарт в качестве входных данных и включает все необходимое содержимое.Затем мне требуется контроллер указанного компонента, и вот как я вижу значение локали.
Причина, по которой я не пошел с родительским доступом к области, заключалась в том, что, если иерархия области видимости изменилась, она сломалась.
Спасибо @ georgeawg за вдохновение.
РЕДАКТИРОВАТЬ: пример -
<div ng-repeat="locale in $ctrl.enabled">
<translated-textarea-menu locale="locale">
<the-extra-menu>
<ng-transclude ng-transclude-slot="theExtraMenu"></ng-transclude>
</the-extra-menu>
</translated-textarea-menu>
Родительский компонент (translation-textarea-menu)
component: {
templateUrl: 'xyz.html',
bindings: {
locale: '&',
},
transclude: {
theExtraMenu: '?theExtraMenu'
},
controller: TranslatedTextareaMenuController,
controllerAs: '$ctrl',
}
И затем в компоненте transcluded (дополнительный компонент меню)
component: {
templateUrl: 'x.html',
bindings: {
variables: '&'
},
require: {
translatedTextareaMenu: '^translatedTextareaMenu'
},
controller: TheExtraMenuController,
controllerAs: '$ctrl',
}
И получить к нему доступ с помощью this.translatedTextareaMenu.locale
Директив можно require
контроллеров других директив для обеспечения связи между собой.Это может быть достигнуто в компоненте путем предоставления сопоставления объектов для свойства require
.Ключи объекта указывают имена свойств, под которыми требуемые контроллеры (значения объектов) будут связаны с контроллером требуемого компонента.
Для получения дополнительной информации см.