2013-04-24 31 views
7

Tự hỏi liệu có ai đã đưa ra cách tốt hơn để xử lý nhấp chuột bên ngoài div trong khi sử dụng Ember không? Tôi biết cách jQuery với trình xử lý nhấp chuột toàn cầu mà bạn phải chỉ định từng hành động để thực hiện một số trường hợp nhất định, nhưng tôi hy vọng có ai đó đã đưa ra cách để khai báo điều này bên trong chế độ xem Ember. Ngoài ra, tôi đã thử ol 'cung cấp cho một div một chỉ mục tab và sử dụng trên blur, nhưng hành động Ember dường như không cho phép điều này.Ember - Xử lý các nhấp chuột bên ngoài chế độ xem

+1

Tôi không hiểu những gì vấn đề là. Bạn có thể ủy quyền sự kiện dựa trên biểu thức regexp, điều này không yêu cầu bất cứ điều gì điên rồ. Ngay cả khi xem qua tài liệu Ember.js, việc sử dụng phương thức '.on()' của jQuery là cách tiếp cận mà họ sử dụng để giải quyết các vấn đề ủy nhiệm cùng với các tập con lớn của các phần tử, lồng nhau hay không. – Ohgodwhy

+1

Bạn có thể sử dụng sự kiện ['didInsertElement'] (http://stackoverflow.com/questions/11377215/can-i-give-the-view-a-show-up-animation-in-emberjs/11377899#11377899) để khởi động trình cắm và những thứ tương tự. Và bạn nên sử dụng ['willDestroyElement'] (http://emberjs.com/api/classes/Ember.View.html#event_willDestroyElement) để loại bỏ các ràng buộc. Ngoài ra, bạn có thể sử dụng ['View # on'] (http://emberjs.com/api/classes/Ember.View.html#method_on). – MilkyWayJoe

Trả lời

7

Cảm ơn bạn đã nhập. Tôi đã quay lại và đọc tài liệu về jQuerys .on một lần nữa. Tôi không biết rằng bạn có thể không gian tên sự kiện. Vì vậy, tôi đã lấy cả hai ý kiến ​​và kết hợp chúng với một cái gì đó như thế này.

didInsertElement: function() { 
    Ember.run.next(this, 'attachClickHandler'); 
}, 

attachClickHandler: function(){ 
    var temp = this; 

    $(window).on("click." + temp.elementId, function (e){ 
     //...event here 
    }); 
}, 

detachClickHandler: function(){ 
    $(window).off("click." + this.elementId); 
}, 

Điều này cho phép sự kiện cụ thể cho từng trường hợp xem, đó là điều tôi muốn. Cảm ơn các bạn!

+2

Tôi giả định 'detachClickHandler()' được gọi từ hook 'willDestroyElement' của khung nhìn? – Zaki

+0

Tôi không biết về sự kiện không gian tên :) –

1

bạn có thể thấy hữu ích ClickElsewhereMixin

chỉ bao gồm các mixin trên bất kỳ thành phần và thực hiện onClickElsewhere()

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