Załóżmy, że jestem związany z dostępną witryną, która będzie konsultowana z JS wyłączonym.Jak wykonać ulepszenie progresywne na liście HTML za pomocą angularjs?
Mam listę wiadomości, że mogę podsumowanie ten sposób:
<ul>
<li>News 1</li>
<li>News 2</li>
<li>News 3</li>
</ul>
Everytime przeładować stronę, masz najnowsze wiadomości dodanej, a starą są odrzucane, jeśli masz więcej niż 10 wiadomości .
Teraz, jeśli użyłem Angulard JS, muszę umieścić dane w modelu i powtórzyć ng i pozbyć się mojego statycznego kodu HTML. Lista zostanie wypełniona dynamicznie, dzięki czemu osoby z JS zobaczą listę zaktualizowaną niemal w czasie rzeczywistym.
Potrzebuję, aby oba działały razem. Potrzebuję statycznej listy, a jeśli JS jest aktywowany, chcę, aby obecne elementy były wstawiane do modelu i zarządzane przez angularjs.
Teraz mój obecny sposób to zrobić to:
- gdy mój model zainicjować, parthe listę DOM, wyodrębnić dane ręcznie i usunąć wszystkie liście podrzędnej
- wstrzyknąć kątową kod szablonu na liście
- niech kątowe zrobić jej magia
to jest do bani bo tracisz deklaratywny dobroć kanciasty, plus masz dużo kodu kotła to nie jest nawet generycznych, więc przepisać go na wigilię ry widget na twojej stronie.
Chciałbym po prostu ukryć statyczny html i wyświetlić kątowy DOM, gdy włączony jest javascript. Będziesz musiał wstrzyknąć model js równoważny statycznemu html, który wygenerowałeś, to nie jest miłe, ale próba uzyskania początkowych danych z DOM będzie trudniejsza w utrzymaniu IMHO. W idealnym świecie wygenerowałbyś statyczną stronę z silnikiem javascript i kanciastą na serwerze, aby nie musieć replikować kodu/szablonów, ale nie ma łatwego sposobu na zrobienie tego bankructwa. – Guillaume86
To nie byłby mój idealny świat, ponieważ nie lubię kodowania w JS :-) Podoba mi się twoje podejście (powinieneś zrobić odpowiedź, aby można było upvode), ponieważ jest proste i możliwe do utrzymania. Bt oznacza przesyłanie dwukrotnie większej ilości danych, więc zdecydowanie nie jesteśmy w idealnym świecie. –
Dzięki, zrobię z tym małą odpowiedź;) – Guillaume86