Tóm tắt
gói Web UI Dart của khai báo có thể đăng ký xử lý cho các sự kiện khác nhau, như nhấp chuột và KeyUp. Sự kiện keyUp sẽ kích hoạt mọi sự kiện trên bàn phím. Để lọc những sự kiện đó và chỉ để nghe các khóa cụ thể, bạn cần xem xét thuộc tính keyCode. May mắn thay, Dart có một lớp tiện lợi để chuẩn hóa mã phím trên các trình duyệt. Bạn có thể sử dụng tất cả điều này bên trong thuộc tính ràng buộc khai báo của bạn. Đọc để tìm hiểu làm thế nào!
Lắng nghe để ép chính
Lớp InputElement
có một dòng các sự kiện cho sự kiện KeyUp, gọi onKeyUp
(docs). Luồng onKeyUp
phát ra các trường hợp KeyboardEvent
(doc).
final Stream<KeyboardEvent> onKeyUp;
Cũ 'n Busted
Các KeyboardEvent
cung cấp một accessor keyCode
mà trả về một hệ thống mã khóa cụ thể. Thật không may, một số hệ thống có mã khóa khác nhau cho cùng một khóa ngữ nghĩa. May mắn thay, Dart đã sửa chữa!
New Hotness
Sử dụng KeyEvent.wrap(KeyboardEvent parent)
(doc) để bắt chước KeyEvent
và bình thường hóa mã chủ chốt khó hiểu!
new KeyEvent.wrap(keyboardEvent)
Bây giờ bạn có một thể hiện của KeyEvent
, bạn có thể truy vấn của nó keyCode
cho một cái nhìn hợp lý vào những gì quan trọng được nhấn. Bộ thu thập keyCode
trả về một số int
, nhưng bạn có thể so sánh điều đó với danh sách các khóa từ lớp KeyCode
(doc).
var keyEvent = new KeyEvent.wrap(keyboardEvent);
if (keyEvent.keyCode == KeyCode.ENTER) {
// enter was pressed
}
Cross-trình duyệt ép chính FTW
Các KeyEvent
và KeyCode
lớp giúp bình thường hóa mã chủ chốt trên hệ thống và trình duyệt, do đó bạn không cần phải lo lắng về sự không tương thích khác nhau.
Với giao diện người dùng Web
UI Web cho phép bạn khai báo đăng ký xử lý sự kiện. Bạn có thể nghe các sự kiện quan trọng và kiểm tra xem phím enter đã được nhấn chưa. Dưới đây là một ví dụ:
<input type="text" id="new-todo" on-key-up="if (new KeyEvent($event).keyCode == KeyCode.ENTER) createNewTodo()">
Chú ý cách on-key-up
đăng ký câu lệnh if, trong đó sử dụng KeyEvent
và KeyCode
để bình thường hóa các mã chủ chốt.Phương thức createNewTodo
chỉ được gọi khi nhấn phím enter.
Ta da!
Đây là mẫu cực kỳ hữu ích. –
Đó là một chút tiết, imo, nhưng có vẻ như nó hoạt động. :) –
Tôi rất muốn nói khi nhập phím. Vì vậy, tôi đã mở: https://github.com/dart-lang/web-ui/issues/357 –