Kluczem jest tutaj rozdzielenie obaw, a zatem wiązanie zdarzeń jest ogólnie przyjętą metodą. Jest to w zasadzie to, co powiedziało wiele istniejących odpowiedzi.
Jednak nie wyrzucać ideę znaczników deklaratywnej zbyt szybko. Ma swoje miejsce, a dzięki ramom takim jak Angularjs jest centralnym punktem.
Trzeba zrozumieć, że całość <div id="myDiv" onClick="divFunction()">Some Content</div>
została tak bardzo zawstydzona, ponieważ została nadużyta przez niektórych programistów. Więc osiągnął punkt świętokradzkich proporcji, podobnie jak tables
. Niektórzy programiści faktycznie unikają tables
danych tabelarycznych. To idealny przykład ludzi działających bez zrozumienia.
Chociaż podoba mi się pomysł, aby moje zachowanie było oddzielone od moich poglądów. Nie widzę problemu ze znacznikami deklarującymi, co robi (nie jak to robi, to jest zachowanie). Może mieć postać rzeczywistego atrybutu onClick lub atrybutu niestandardowego, podobnie jak komponenty javascript do bootstrapsa.
W ten sposób, patrząc tylko na znaczniki, możesz zobaczyć, co się dzieje, zamiast próbować odwrócić wyszukiwanie powiązań zdarzeń javascript.
Tak więc, jako trzecia alternatywa dla powyższego, użycie atrybutów danych do deklaratywnego ogłoszenia zachowania w obrębie znaczników. Zachowanie jest niewidoczne, ale na pierwszy rzut oka widać, co się dzieje.
Przykład ładowania początkowego:
<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>
Źródło: http://getbootstrap.com/javascript/#popovers
Uwaga Główną wadą drugiego przykładu jest zanieczyszczenie globalnej przestrzeni nazw. Można to obejść, stosując trzecią alternatywę powyżej lub szkielety takie jak Angular i ich atrybuty ng-click z automatycznym zasięgiem.