Có phải không có tương đương cho **$scope.emit()*...
Có phải không có tương đương cho **$scope.emit()*...
Trong AngularJS, $scope.emit() và $scope.broadcast() là hai phương thức quan trọng được sử dụng để giao tiếp giữa các thành phần trong ứng dụng thông qua cơ chế xuất bản/đăng ký (publish/subscribe). Tuy nhiên, khi chuyển sang Angular (phiên bản 2 trở lên), cơ chế giao tiếp giữa các thành phần đã thay đổi đáng kể và không còn sử dụng $scope như trong AngularJS.
Angular sử dụng một hệ thống giao tiếp dựa trên các dịch vụ (services) và EventEmitter để thay thế cho $scope.emit() và $scope.broadcast(). Cụ thể, để giao tiếp giữa các thành phần không có mối quan hệ trực tiếp (ví dụ như cha-con, anh em), Angular khuyến khích sử dụng các dịch vụ có thể chứa EventEmitter. Các thành phần có thể đăng ký lắng nghe sự kiện từ EventEmitter này và phát ra sự kiện khi cần thông qua phương thức emit() của EventEmitter.
Ví dụ, trong Angular, bạn có thể tạo một dịch vụ giao tiếp như sau:
import { Injectable, EventEmitter } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class CommunicationService {
eventEmitter: EventEmitter<any> = new EventEmitter();
sendEvent(data: any) {
this.eventEmitter.emit(data);
}
}
Các thành phần khác có thể đăng ký lắng nghe sự kiện từ dịch vụ này...
expert
Gợi ý câu hỏi phỏng vấn
Chưa có bình luận nào