2012-11-06 9 views
5

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.

+0

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

+0

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. –

+0

Dzięki, zrobię z tym małą odpowiedź;) – Guillaume86

Odpowiedz

1

To dobre pytanie, które już przyszło mi do głowy podczas korzystania z niektórych frameworków js.

Na razie 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 generujesz, to nie jest miłe (nie DRY), ale próba uzyskania początkowych danych z DOM będzie trudniejsza w utrzymaniu IMHO. Możesz pakować wszystkie javascript/szablony w jeden plik js, w ten sposób strona statyczna będzie importować tylko jeden skrypt, a waga strony nie będzie miała wpływu na przeglądarkę noscript.

+0

Czy sądzisz, że można zrobić wtyczkę, która pobiera początkowy znacznik zaznaczony klasami somes i ładuje go automatycznie w modelu? W ten sposób mógłbym rozwiązać mój problem i podzielić się nim z innymi. Ale nie chcę tracić czasu, jeśli nie jest to możliwe. –

+0

Jest to wykonalne, ale nie sądzę, że warto inwestować w czasie w porównaniu do prostoty renderowania na stronie obiektu json zawierającego początkowe dane modelu. – Guillaume86