Тут є ключовим питанням відокремлення проблем, тому прив'язка подій є загальноприйнятим методом. Це в основному те, про що сказано багато існуючих відповідей.
Однак не кидайте ідею декларативної розмітки занадто швидко. У ній є своє місце, і такі рамки, як Angularjs, є центральним.
Повинно бути розуміння того, що ціле <div id="myDiv" onClick="divFunction()">Some Content</div>
було збентежене настільки сильно, оскільки ним зловживали деякі розробники. Так воно дійшло до точки блюзнірських розмірів, як і раніше tables
. Деякі розробники насправді уникають tables
табличних даних. Це ідеальний приклад людей, які діють без розуміння.
Хоча мені подобається ідея зберігати свою поведінку окремо від моїх поглядів. Я не бачу жодної проблеми з розміткою, яка б декларувала, що вона робить (не як це робить, це поведінка). Він може бути у формі фактичного атрибута onClick або спеціального атрибуту, як і компоненти завантажувального Javascript.
Таким чином, поглянувши просто на розмітку, ви зможете побачити, що робиться, замість того, щоб намагатись зворотного пошуку прив'язних файлів JavaScript.
Отже, в якості третьої альтернативи вищезазначеному, використовуючи атрибути даних, щоб декларативно оголосити поведінку в межах розмітки. Поведінка залишається поза зором, але з першого погляду ви можете побачити, що відбувається.
Приклад завантаження:
<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>
Джерело: http://getbootstrap.com/javascript/#popovers
Примітка Основним недоліком другого прикладу є забруднення глобального простору імен. Цього можна обійти, використовуючи третю вище альтернативу, або рамки, такі як Angular, та їх атрибути ng-click з автоматично областю застосування.