2013-04-24 12 views
7

Fragen Sie sich, ob jemand einen besseren Weg gefunden hat, einen Klick außerhalb eines divs zu handhaben, während er Ember benutzt? Ich kenne den jQuery-Weg mit einem globalen Click-Handler, der jede Aktion für bestimmte Instanzen angeben muss, aber ich hoffe, dass jemand eine Möglichkeit gefunden hat, dies in einer Ember-Ansicht zu deklarieren. Außerdem habe ich versucht, die ol 'geben Sie einen div einen Tab-Index und verwenden Sie die auf Unschärfe, aber Ember-Aktionen scheinen dies nicht zu erlauben.Ember - Handhabung klickt außerhalb der Sicht

+1

Ich verstehe nicht finden können, was das Problem ist. Sie können das Ereignis basierend auf einem Regexp-Ausdruck delegieren, dies erfordert nichts Verrücktes. Selbst wenn man sich die Dokumentation von Ember.js anschaut, stellt man fest, dass die '.on()' Methode von jQuery der Ansatz ist, den sie verwenden, um Delegationsprobleme entlang großer Teilmengen von Elementen zu lösen, verschachtelt oder nicht. – Ohgodwhy

+1

Sie können das Ereignis ['didInsertElement'] (http://stackoverflow.com/questions/11377215/can-i-give-the-view-a-show-up-animation-in-emberjs/11377899#11377899) verwenden um ein Plug-in zu starten und so weiter. Und Sie sollten ['willDestroyElement'] (http://emberjs.com/api/classes/Ember.View.html#event_willDestroyElement) verwenden, um Bindungen zu entfernen. Alternativ können Sie ['View # on'] (http://emberjs.com/api/classes/Ember.View.html#method_on) verwenden. – MilkyWayJoe

Antwort

7

Danke für die Eingabe. Ich ging zurück und las erneut die Dokumentation auf jQuerys .on. Mir war nicht bewusst, dass Sie das Ereignis mit einem Namensraum versehen könnten. Also nahm ich beide Kommentare und kombinierte sie mit so etwas.

Dadurch kann das Ereignis für jede View-Instanz spezifisch sein, was ich wollte. Danke Leute!

+2

Ich gehe davon aus, dass 'detachClickHandler()' aus dem 'willDestroyElement'-Hook der Ansicht aufgerufen wird? – Zaki

+0

Ich wusste nichts über den Namespace der Ereignisse :) –

1

Sie ClickElsewhereMixin nützlich

sind nur die mixin auf jede Komponente und implementieren onClickElsewhere()