Die Trennung von Bedenken 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 wirft die Idee nicht deklarativen Markup zu schnell weg. Es hat seinen Platz und ist mit Frameworks wie Angularjs das Herzstück.
Es muss ein Verständnis dafür bestehen, dass das Ganze <div id="myDiv" onClick="divFunction()">Some Content</div>
so stark beschämt wurde, weil es von einigen Entwicklern missbraucht wurde. So erreichte es den Punkt von sakrilegischen Ausmaßen, ähnlich wie tables
. Einige Entwickler vermeiden tatsächlichtables
tabellarische Daten. Es ist das perfekte Beispiel für Menschen, die ohne Verständnis handeln.
Obwohl ich die Idee mag, mein Verhalten von meinen Ansichten zu trennen. Ich sehe kein Problem damit, dass das Markup deklariert, was es tut (nicht wie es es tut, das ist Verhalten). Dies kann in Form eines tatsächlichen onClick-Attributs oder eines benutzerdefinierten Attributs erfolgen, ähnlich wie bei Bootstraps-Javascript-Komponenten.
Auf diese Weise können Sie durch einen Blick auf das Markup sehen, was funktioniert, anstatt zu versuchen, Javascript-Ereignisordner für die Suche umzukehren.
Als dritte Alternative zu den oben genannten können Datenattribute verwendet werden, um das Verhalten innerhalb des Markups deklarativ anzukündigen. Verhalten wird aus dem Blickfeld gehalten, aber auf einen Blick können Sie 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 Namespace. Dies kann umgangen werden, indem entweder die dritte Alternative oben oder Frameworks wie Angular und ihre ng-click-Attribute mit automatischem Gültigkeitsbereich verwendet werden.