2011-08-18 28 views
15

Tôi có một cái nhìn gọi là gallery mà tùy chọn. Tôi muốn nghe và hành động trên các sự kiện keydown khi bộ sưu tập được hiển thị (cho đến khi nó được đóng lại).Backbone.js - Thêm các sự kiện quan trọng khi chế độ xem đang hoạt động?

Làm cách nào để thực hiện điều này trong các sự kiện xương sống? Tôi đã thử tất cả các biến thể của 'keydown X': chức năng và không có biến thể nào hoạt động.

+0

Thư viện của bạn là chế độ xem xương sống hoặc html + js độc lập? –

+0

Đó là chế độ xem xương sống. –

+0

hiển thị cho chúng tôi các bộ chọn của bạn cho các sự kiện 'keydown' ... tôi nghĩ bạn ràng buộc chúng với các phần tử sai –

Trả lời

22

tôi chỉ thử nghiệm sau đây và nó làm việc hoàn hảo:

var view = Backbone.View.extend({ 
    // ... snip ... 
    events: { 
    'keyup :input': 'logKey' 
    ,'keypress :input': 'logKey' 
    } 
    ,logKey: function(e) { 
    console.log(e.type, e.keyCode); 
    } 
}); 

tôi muốn quay trở lại và kiểm tra mã của bạn. Tất cả các sự kiện trong Backbone được định nghĩa là các đại biểu gắn liền với phần tử viewInstance.el. Để hủy liên kết các sự kiện, hãy gọi số viewInstance.remove() gọi $(viewInstance.el).remove() dưới bìa và dọn sạch tất cả các sự kiện được ủy quyền. Cũng xin lưu ý rằng trong một số trình duyệt (Firefox tôi tin) có một vấn đề đã biết là một số phím (như phím mũi tên) không bong bóng và sẽ không hoạt động đúng với các sự kiện được ủy quyền keypress. Nếu bạn đang bắt các phím đặc biệt, có lẽ bạn nên sử dụng keyupkeydown.

+2

Đây có phải là giả định rằng Chế độ xem được đề cập có chứa dữ liệu đầu vào không? Tôi nghĩ rằng OP đã hỏi về trường hợp một cái nhìn cụ thể chỉ đơn giản là kết xuất - hãy tưởng tượng rằng có một hình ảnh lightboxed hoặc một cái gì đó và bạn muốn treo lên "Escape" để đóng hình ảnh ... –

+2

Bạn là chính xác. Giải pháp của tôi giả định có các yếu tố đầu vào. Nếu bạn muốn hành động trên các sự kiện quan trọng ở bất kỳ đâu trong chế độ xem, bạn chỉ cần loại trừ công cụ chọn (như trạng thái tài liệu Backbone). 'sự kiện: {keyup: 'logKey'}' – fearphage

+9

- Tôi không thể nhận được các phím/keyup/keydown toàn cục này hoạt động. Có một số chi tiết nhỏ khác mà tôi phải quên không? Có thể bạn có thể trỏ đến một tham chiếu hoặc thậm chí là một câu hỏi để biết thêm thông tin về các sự kiện trên toàn tài liệu – streetlight

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