Я пытаюсь создать простую директиву show/hide на основе элементов, переведенных в div. У меня есть родительская и дочерняя директива. При нажатии на родительскую директиву директива child должна переключать отображение/скрытие своего div. Функция переключения находится в родительском контроллере и переключает переменную между true и false, чтобы дочерняя директива отображала/скрывала.связать директиву директивы parent с дочерней директивой в угловом
Проблема: функция переключения в родительской директиве работает правильно, однако дочерняя директива не знает изменения переменной переключения при щелчке родителя. Я передаю ctrl функции ссылки в дочерней директиве, используя require. Таким образом я могу получить доступ к родительским объектам контроллера для показа и скрытия. Переключающая переменная отображается дочерним элементом, но не отражает никаких изменений после начальной загрузки страницы. При нажатии ничего не отображается или не скрывается.
код:
angular.module('demo', [])
.directive('demoParent', function() {
return {
restrict: 'E',
scope: {},
transclude: true,
template: '<div ng-click="toggleTarget()" ng-transclude></div>',
controller: function($scope) {
$scope.toggleTarget = function() {
this.openTarget = !this.openTarget;
};
this.openTarget = false;
}
};
})
.directive('demoChild', function() {
return {
require: '^demoParent',
restrict: 'E',
transclude: true,
link: function(scope, elem, attrs, ctrl) {
scope.ctrl = ctrl;
},
template: '<div ng-show="ctrl.openTarget" ng-transclude></div>',
};
});
нужен ли ребенку, чтобы добавить Бодрствующий к родительскому Ctrl или это случай изолированных переменным, как только передается от родителей к ребенку?
'demoChild' требует, контроллер demoChild. Если вам нужно получить доступ к объему 'demoParent' из' demoChild', вам нужно будет потребовать его вместо 'require: '^ demoParent''. –
Не могли бы вы показать свой HTML-код? –
Просто изменил его на demoParent, это была опечатка на моем конце. Я не получаю никаких ошибок при требовании родительского контроллера. Кажется, что ребенок просто не знает никаких изменений в родительском контроллере. – user3613538