Ahojte,
planujem prepisat jeden svoj starsi projekt s .Net Frameworku a knockout.js do .Net 5 a Blazor serveru.
No pri planovani architektury a volby technologii som narazil na problem, ku ktoremu som nic nevygooglil, preto by som rad pocul aj ine nazory ako ho vyriesit.
Ide o to, ze sa s databazy vytahuje HTML-ko, ktore sa renderuje do kontaineru (HTML div) na frontende. To v Blazore problem nie je.
Problem je, ze obsahuje obrazky a linky, co su pre mna aktivne prvky - po kliknuti na obrazok sa otvori v shadowboxe (galerii), linky umoznuju preklikavanie sa medzi dokumentami ale vedu aj na externe stranky.
Ako to v Blazore riesit?
Prve co ma napadlo, je uz vyrenderovane HTML zbehnut javascriptom a zavesit tam udalosti typu onclick atd… ale to mi prislo tak strasne nemotorne a kostrbate, proste skrabanie sa cez hlavu.
Druhe co ma napadlo je, parsovat HTML a cez vlastnorucne napisanu komponentu s prepisat dane HTML na virtualny DOM cez metodu BuildRenderTree.
Celkom sa nechapeme. Preprocesing aj posprocesing daneho HTML robim.
Poviem to inak. Keby to robim v JS, tak po priradeni daneho HTML do divu zavesim onclick eventy na rozne tagy vo vnutri. Riesim, ako nieco podobne spravit v Blazori tak aby to bolo s kostolnym poriadkom.
Preco by bol JavaScript kostrbaty? Konecne sa vyuzije na to, na co sa ma vyuzit - na scriptovanie.
Nech zije $(document.body).on('click', '.my-selector', clickHandler);
Mimochodom, netreba ziade pridavanie onclick atributov, ani prebehavanie elementov.