2010-11-04 43 views
8

Tôi nhận thấy rằng có hai phương pháp mà trình xử lý sự kiện có thể được nối với tiện ích GWT: addHandler và addDomHandler. JavaDoc cho addDomHandler nói, "Thêm một trình xử lý sự kiện gốc vào tiện ích con và nhấn chìm sự kiện gốc tương ứng. Nếu bạn không muốn chìm sự kiện gốc, hãy sử dụng phương thức addHandler chung thay thế."Sự khác nhau giữa các sự kiện logic và sự kiện gốc trong GWT là gì?

Tôi rất biết ơn nếu ai đó sẽ khai sáng cho tôi về sự khác biệt giữa các sự kiện bản địa và sự kiện hợp lý.

Trả lời

6

Sự kiện gốc được trình duyệt trực tiếp kích hoạt - các sự kiện như nhấp chuột, di chuột qua, nhấn phím, v.v. Để nhận các sự kiện đó trên Widget, bạn phải đặc biệt đánh chìm các sự kiện.

Sự kiện chung chung, tốt hơn, chung chung hơn. Ví dụ: tôi đã tạo một SaveEvent và một số DeleteEvent để sử dụng riêng của mình, điều đó bị phát sinh khi các điều kiện giao diện người dùng nhất định được đáp ứng. Chúng cách xa trình duyệt và sẽ không bao giờ bị trình duyệt bắn trực tiếp. Tôi nghĩ bạn nên gắn bó với các sự kiện chung chung hơn khi bạn có thể. Mặt khác, nếu bạn đang tạo tiện ích tùy chỉnh mà bạn không thể tạo ra từ các tiện ích con khác - ví dụ: nếu bạn muốn tạo thanh trượt mà người dùng có thể nhấp và kéo - bạn sẽ cần các sự kiện DOM.

+0

Bạn có ý gì khi "bạn phải đặc biệt đánh chìm các sự kiện"? Làm thế nào để bạn chìm chúng? – Mayumi

+0

Bạn gọi 'sinkEvents' trong UIObject (http://google-web-toolkit.googlecode.com/svn/javadoc/2.5/com/google/gwt/user/client/ui/UIObject.html#sinkEvents (int)) . Sau khi bạn làm điều đó, 'onBrowserEvent' của tiện ích con sẽ được kích hoạt với các sự kiện có liên quan. Ví dụ, nếu bạn chìm các sự kiện chuột, thì 'onBrowserEvent' sẽ được kích hoạt khi các sự kiện chuột tự nhiên xảy ra với widget của bạn. –

Các vấn đề liên quan