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
Odpowiedz
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!
Zakładam, że 'detachClickHandler()' jest wywoływane z haka 'willDestroyElement' widoku? – Zaki
Nie wiedziałem o wyświetlaniu nazw wydarzeń :) –
można znaleźć ClickElsewhereMixin przydatnych
prostu zawierać wstawek na którykolwiek ze składników i wdrożenie onClickElsewhere()
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
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