2013-04-24 8 views
7

Zastanawiasz się, czy ktoś wymyślił lepszy sposób obsługi kliknięcia poza div podczas korzystania z Ember? Znam sposób jQuery za pomocą globalnego modułu obsługi kliknięć, który należy określić dla każdej akcji, ale mam nadzieję, że ktoś wymyślił sposób, aby zadeklarować to w widoku Ember. Jak dobrze, spróbowałem, żeby dać div indeks tabulacji i użyć rozmycia, ale działania Ember nie pozwalają na to.Ember - obsługa kliknięć poza widokiem

+1

Nie rozumiem, na czym polega problem. Możesz delegować wydarzenie na podstawie wyrażenia regularnego, co nie wymaga niczego szalonego. Nawet przeglądając dokumentację Ember.js stwierdza, że ​​wykorzystanie metody '.on()' jQuery jest podejściem, którego używają do rozwiązywania problemów delegacji wzdłuż dużych podzbiorów elementów, zagnieżdżonych lub nie. – Ohgodwhy

+1

Możesz użyć zdarzenie ['didInsertElement'] (http://stackoverflow.com/questions/11377215/can-i-give-the-view-a-show-up-animation-in-emberjs/11377899#11377899) aby uruchomić wtyczkę i takie rzeczy. I powinieneś użyć ['willDestroyElement'] (http://emberjs.com/api/classes/Ember.View.html#event_willDestroyElement), aby usunąć powiązania. Alternatywnie możesz użyć ['Wyświetl # na '] (http://emberjs.com/api/classes/Ember.View.html#method_on). – MilkyWayJoe

Odpowiedz

7

Dzięki za wejście. Powróciłem i ponownie przeczytałem dokumentację jQuerys .on. Nie wiedziałem, że możesz nazwać to wydarzenie. Więc wziąłem oba komentarze i połączyłem je z czymś takim.

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); 
}, 

Pozwala to na określenie zdarzenia dla każdej instancji widoku, co było tym, czego oczekiwałem. Dzięki chłopaki!

+2

Zakładam, że 'detachClickHandler()' jest wywoływane z haka 'willDestroyElement' widoku? – Zaki

+0

Nie wiedziałem o wyświetlaniu nazw wydarzeń :) –

1

można znaleźć ClickElsewhereMixin przydatnych

prostu zawierać wstawek na którykolwiek ze składników i wdrożenie onClickElsewhere()

Powiązane problemy