У меня возникли проблемы, выяснить, как есть одна директива инициировать событие в другой директивеДирективы, которые могут взаимодействовать с другими директивами
Скажем, у меня есть следующие 2 директивы
project.directive('ActionButton', function() {
return {
restrict: 'E',
scope: {
orderId: '@'
},
templateUrl: '/scripts/templates/directive-templates/order-action-button.html',
link: function (scope, element, attrs) {
scope.doAction = function() {
// I want to trigger 'scope.refreshOrderDetails' in my other directive from here
}
}
}
project.directive('OrderView', function() {
return {
restrict: 'E',
scope: {
orderId: '@'
},
templateUrl: '/scripts/templates/directive-templates/order-view.html',
link: function (scope, element, attrs) {
scope.refreshOrderDetails = function() {
// data is refreshed here
}
}
}
И я использую мои директивы как этот
<ca-action-button order-id="{{orderId}}"></ca-order-action-button>
<ca-order-view order-id="{{orderId}}"></ca-order-details>
Где ч порядок-деталь, первоначально заполняется данными, но нуждается в обновлении, когда событие ч порядка действие кнопки обжигают.
Кнопка действия будет загружена многими doActions (это выпадающее меню с несколькими действиями), и там будут несколько разных директив типа OrderView, каждый из которых имеет собственный набор данных, нуждающихся в обновлении на разных триггерах
Похоже, вы должны использовать родительский контроллер для обоих этих директив общаться через, а не с помощью событий (которые могут получить громоздким, особенно если у вас есть несколько наборов директив на странице) – Adam