Temat: Framework do HTML5 - co powinien mieć?
Co powinien mieć framework JS ? Narzędzia które przyśpieszą pracę. Ciężko coś mówić w tej chwili bo nie podałeś konkretniejszych danych. Co to za framework. do czego ma służyć itp. Ja dla przykładu zrobiłem sobie coś w ten deseń wykorzystując data-x
data-dp-click="nazwa:kontroler"
data-dp-change="nazwa:kontroler"
data-dp-keydown="nazwa:kontroler"
data-dp-keypress="nazwa:kontroler"
data-dp-event="nazwa:kontroler"
w parze z:
data-dp-slot="nazwa"
Slot jest odbiorcą zdarzenia. Chodziło o łączenie elementów na stronie bez bóg wie ile pisania.
Nazwa to Twoja nazwa przypisana zdarzeniu. Kontroler to funkcja z przestrzeni globalnej (bezpośrednio w window musi być). Uruchamiana jest w kontekście slotu a za parametr ma trigger który ją wywołał. I tak przykładowo:
// Link
<a href="#" data-db-click="test01:clickedBy">Homepage</a>
// Div który jest celem zdarzenia
<div data-dp-slot="test01">Lorem ipsum...</div>
//Kontroler dla zdarzenia
function clickedBy(trigger) {
this.textContent = trigger.textContent;
}
Jeżeli nic nie popsułeś po drodze to po kliknięciu w link powyżej, div powinien zmienić swoją zawartość na słówko "Homepage". Wkurzało mnie wieczne bawienie się z JS ilekroć chciałem zrobić dynamiczną listę (która się zmienia w zależności od kontroler formularzy) to sobie coś takiego skleciłem. Działa od IE 6 w górę i całej reszcie.
Raz dla próby zrobiłem cały formularz chyba na 50 kontrolek i je połączyłem. Za funkcję miałem coś takiego:
function passInputValue(trigger) {
this.value= trigger.value;
}
I powiem Ci że działało jak marzenie. Od razu powiem że pomysł nie jest mój. Koncepcje wyciągnąłem z QT (C++) a implementację z użyciem data-x (pomysł, wcześniej chciałem łapać elementy po ID i tego typu rzeczy) zapożyczyłem z AngularJS.
JEDYNA wada tego rozwiązania jaka mi wpadła w oko to to że na starcie skrypt iteruje po wszystkich elementach dokumentu HTML. I nie jest to wada specjalnie mi przeszkadzająca bo nawet przy tysiącu elementów idzie mu to bardzo sprawnie. Mam gdzieś implementację która działała po ID w ten sposób:
obj.connect('signalElement', 'slotElement', callback);
ale rozwiązanie pozostawiało wiele do życzenia pod niektórym względami. Zwłaszcza gdy "nadawców" i "odbiorców" było dużo. A z uwagi na brak obsługi niektórych "getElement*" w IE i tak trzeba było pracować na DOM deczko by osiągnąć prawidłowe działanie.