Hãy xem xét hai chỉ thị lồng nhau với phạm vi cô lập:AngularJS chỉ cha mẹ giao tiếp với chỉ thị con
<dctv1>
<dctv2></dctv2>
<dctv1>
Nếu tôi muốn dctv2
để nói chuyện với dctv1
tôi có thể lựa chọn:
- tôi có thể yêu cầu bộ điều khiển của
dctv1
trong định nghĩa củadctv2
bằng cách sử dụngrequire:'^dctv1'
- Tôi có thể gọi biểu thức trên phạm vi gốc với trình bao bọc
<dctv2 callParent="hello()"></dctv2>
vàscope:{callParent:'&'}
- Tôi cũng có thể sử dụng
$scope.$emit
trongdctv2
nhưng sau đó tất cả phạm vi gốc sẽ nghe thấy thông báo.
Bây giờ tôi muốn dctv1
để nói chuyện với dctv2
.
- Cách duy nhất tôi có thể thực hiện việc này là sử dụng
$scope.$broadcast
, nhưng sau đó tất cả trẻ em sẽ nghe thấy.
Bằng cách nói ở đây, tôi muốn gọi hàm hoặc tương tự. Không muốn thiết lập đồng hồ làm tắc nghẽn đường tiêu hóa.
Làm cách nào để tạo dctv1
thông báo dctv2
một cách tốt nhất, làm cho chúng được ghép nối lỏng lẻo? Tôi chỉ có thể loại bỏ dctv2 mà không có lỗi.
Nếu bạn chọn sự kiện. Bạn có thể gọi preventDefault và stopPropagation. Trong thực tế, sự kiện $ là một thể hiện của sự kiện jQuery. – Raulucco