У меня есть две директивы: directiveA
и directiveB
как с функциями link
. Как я могу назвать функцию, принадлежащую directiveA
, от directiveB
?Как вызвать функцию ссылки на родительскую директиву из функции ссылки дочерней директивы
Путь я мой код настроен так далеко:
angular.module('myApp').directive('directiveA', function() {
return {
templateUrl: 'directiveA.html',
link: function (scope) {
scope.directiveAAlert = function() {
alert('This is A');
}
}
}
});
angular.module('myApp').directive('directiveB', function() {
return {
scope: {
onButtonClicked: '='
}
templateUrl: 'directiveB.html',
link: function (scope) {
scope.showAlert = function() {
scope.onButtonClicked();
}
}
}
});
В directiveA.html
:
<directive-b onButtonClicked='directiveAAlert'></directive-b>
В directiveB.html
:
<button ng-click='showAlert()'></button>
Но когда я нажимаю кнопку, Я получаю сообщение об ошибке TypeError: scope.onLogInButtonClicked is not a function at Scope.link.scope.showAlert
.
Как просто определить и вызвать эту же функцию из дочерней директивы?
Зачем переходить 'directiveAAlert' к контроллеру? Я просто изменил атрибут из верблюжьего случая на 'on-button-clicked' и решил мою проблему. (Мне не нужно было создавать контроллер и требовать его в дочернем элементе для его работы) – roscioli
@roscioli oh..thats работал, потому что вы передали этот метод в изолированной области. Если вы не пройдете это в изолированной области то вы можете напрямую вызвать родительский директивный метод, не передавая его в изолированном объеме. –