Angenommen, ich bin an eine barrierefreie Website gebunden, die mit JS deaktiviert sein wird.Wie mache ich eine progressive Verbesserung in einer HTML-Liste mit angularjs?
Ich habe eine News-Liste, die ich Zusammenfassung auf diese Weise:
<ul>
<li>News 1</li>
<li>News 2</li>
<li>News 3</li>
</ul>
Jedesmal, wenn Sie die Seite neu zu laden, Sie die neuesten Nachrichten erhalten hinzugefügt, und die alten verworfen, wenn Sie mehr als 10 Nachrichten bekommen .
Nun, wenn ich Angulard JS verwendet habe, muss ich die Daten in ein Modell und eine ng-Wiederholung einfügen, und meine statische HTML loswerden. Die Liste wird dynamisch ausgefüllt, sodass Personen mit JS die Liste fast in Echtzeit aktualisiert sehen.
Was ich brauche ist, dass die beiden zusammenarbeiten. Ich brauche die statische Liste, und wenn JS aktiviert ist, möchte ich, dass die aktuellen Elemente in das Modell eingefügt und von angularjs verwaltet werden.
Jetzt ist meine aktuelle Art und Weise, es zu tun ist:
- wenn mein Modell zu initialisieren, Parthe die Liste DOM, extrahieren die Daten manuell und entfernen Sie die alle untergeordneten Liste
- Winkel Template-Code in der Liste injizieren
- läßt Winkel seiner zaubern
es saugt, weil Sie die deklarative Güte des Winkels verlieren, und Sie haben eine Menge Kessel-Code ist nicht einmal generisch, so dass Sie es für Vorabend umschreiben Ry Widget auf Ihrer Seite.
Ich würde nur die statische HTML ausblenden und das eckige DOM anzeigen, wenn Javascript aktiviert ist. Sie müssen das js-Modell dem von Ihnen generierten statischen HTML-Code hinzufügen, es ist nicht wirklich nett, aber der Versuch, Anfangsdaten von DOM zu erhalten, wird schwieriger zu handhaben sein. In einer perfekten Welt würden Sie die statische Seite mit einer Javascript-Engine und eckigen auf dem Server generieren, um Code/Vorlagen nicht replizieren zu müssen, aber es gibt keine einfache Möglichkeit, diese ATM zu verwenden. – Guillaume86
Es wäre nicht meine perfekte Welt, da ich nicht gerne in JS programmieren würde :-) Ich mag deinen Ansatz (du solltest es zu einer Antwort machen, damit ich updaten kann), weil es einfach und wartbar ist. Bt bedeutet das Hochladen der doppelten Größe des Datensatzes, also sind wir definitiv nicht in einer idealen Welt. –
Danke, ich werde eine kleine Antwort damit machen;) – Guillaume86