Rolf b: Erster Versuch den Code Aufzuräumen

Beitrag lesen

Wenn Du Angular nur "irrtümlich" drin hast, kann ich Dir auch noch knockout vorschlagen. Das ist eine JS Library die sich ausschließlich um das MVVM Thema kümmert und vor allem ein sehr gutes Online-Tutorial hat.

Es wird nur kritisch, wenn die Tabellen groß werden, dann dauert das Auflösen der Templates zu lange. Dann ist aber auch dein handgemachter Ansatz langsam. Grund dafür ist, dass der Browser nach jeder Änderung am DOM das Layout neu berechnet. Wenn's eine Methode gäbe, mit der sich dieses ständige Re-Rendering unterbinden ließe, würde Knockout sie garantiert benutzen, von daher vermute ich, dass es sie nicht gibt. Bei mir war es so, dass ich ca 1000 Zeilen hatte und er mehrere Sekunden brauchte, um das aufzubauen. Ich bin dann auf Kendo umgestiegen (Payware), weil das eh im Unternehmen war und es auch gleich eine Funktion zur seitenweisen Anzeige mitbrachte. Seitdem kämpfe ich nicht mehr mit Kendo gegen meine Probleme, sondern gegen die Probleme, die ich mit Kendo habe...

Falls es bei Dir zu langsam wird, kannst Du den brute force Ansatz, den die Kendo Widgets verwenden. zu adaptieren versuchen. Sie bauen nicht Stück für Stück das DOM mit DOM-Methoden auf, sondern erzeugen die Tabelle als einen langen String mit dem passenden HTML darin und setzen den als innerHTML in einen Container. Dann wird nur einmal layoutet, es ist nur schwieriger, alle Change-Events richtig zuzuordnen und ich denke, dass Knockout das deshalb nicht macht. Wenn Du HTML zu Fuß als String aufbaust, kannst Du an einigen Stellen auch auf Funktionsaufrufe verzichten und einfach Stringkonstanten verwenden (z.B. für die Überschriften).

Rolf