Die Trennung der Bereiche ist hier der Schlüssel, und daher ist die Ereignisbindung die allgemein akzeptierte Methode. Dies ist im Grunde, was viele der vorhandenen Antworten gesagt haben.
Allerdings Werfen Sie die Idee des deklarativen Markup nicht zu schnell über Bord. Es hat seinen Platz, und mit Frameworks wie Angularjs, ist das Herzstück.
Es muss ein Verständnis dafür herrschen, dass die gesamte <div id="myDiv" onClick="divFunction()">Some Content</div>
wurde so stark beschämt, weil es von einigen Entwicklern missbraucht wurde. So erreichte es den Punkt, an dem es zu einem Sakrileg wurde, ähnlich wie tables
. Einige Entwickler eigentlich vermeiden tables
für tabellarische Daten. Das ist das perfekte Beispiel dafür, dass Menschen handeln, ohne zu verstehen.
Allerdings gefällt mir der Gedanke, mein Verhalten und meine Ansichten voneinander zu trennen. Ich sehe kein Problem mit dem Markup deklariert was es tut (nicht wie er tut es, das ist Verhalten). Es könnte in Form einer tatsächlichen onClick-Attribut, oder ein benutzerdefiniertes Attribut, ähnlich wie Bootstraps Javascript-Komponenten sein.
Auf diese Weise, durch einen Blick nur auf die Markup, können Sie sehen, was tut, anstatt zu versuchen, Reverse-Lookup-Javascript-Ereignis-Bindemittel.
Eine dritte Alternative zu den oben genannten Möglichkeiten ist die Verwendung von Datenattributen, um das Verhalten im Markup deklarativ anzukündigen. Das Verhalten wird aus der Ansicht herausgehalten, aber man kann auf einen Blick sehen, was passiert.
Bootstrap-Beispiel:
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Quelle: http://getbootstrap.com/javascript/#popovers
Hinweis Der Hauptnachteil des zweiten Beispiels ist die Verschmutzung des globalen Namensraums. Dies kann umgangen werden, indem entweder die dritte Alternative oben oder Frameworks wie Angular und ihre ng-click-Attribute mit automatischem Geltungsbereich verwendet werden.