Rozważmy dwie zagnieżdżone dyrektyw z izolować zakresów:angularjs dyrektywa rodzic komunikować z dyrektywą dziecięcej
<dctv1>
<dctv2></dctv2>
<dctv1>
Jeśli chcę dctv2
rozmawiać dctv1
mam, mogą w opcji:
- może wymagał kontroler
dctv1
w definicjidctv2
przy użyciurequire:'^dctv1'
- Mogę nazwać wyrażenie w zakresie nadrzędnym z opakowaniem
<dctv2 callParent="hello()"></dctv2>
iscope:{callParent:'&'}
Mogę również użyć$scope.$emit
wdctv2
, ale wtedy wszystkie nadrzędne zasięgi usłyszą komunikat.
Teraz chcę dctv1
rozmawiać dctv2
.
- Jedynym sposobem mogę osiągnięcia tego jest użycie
$scope.$broadcast
, ale wtedy wszystkie dzieci będą słuchać.
Mówiąc tutaj mam na myśli wywołanie funkcji lub coś podobnego. Nie chcę ustawiać zegarków zatykających trawę.
Jak najlepiej wykonać dctv1
powiadomić o błędzie, co spowoduje, że będą luźne? Po prostu powinienem móc usunąć dctv2 bez błędów.
Jeśli wybrałeś wydarzenia. Możesz wywołać preventDefault i stopPropagation. W rzeczywistości zdarzenie $ jest instancją zdarzenia jQuery. – Raulucco