Erzwinge das erneute Laden der Vorlage einer Richtlinie
Arbeite ich an einer AngularJS-app mit mehreren Richtlinien. Die Richtlinie Vorlagen gespeichert werden, in einer separaten html-Datei. Bei der Bearbeitung dieser Vorlage, mein browser erkennt keine änderungen nach einem reload und verwendet immer die version im Cache. Alle anderen änderungen am source-code werden erkannt und führen zu einem Neuladen.
Ich denke das problem ist eher die $templateCache das scheint zu sein, verwendet von AngularJS beim laden der Vorlage.
Was ich gefunden habe im Quellcode von AngularJS 1.0.2 ist die folgende Zeile 4317, die Teil der compileTemplateUrl():
$http.get(origAsyncDirective.templateUrl, {cache: $templateCache})
Frage ich mich, ob jemand diese Art von problem, und wenn es ist ein Weg, zu sagen, AngularJS, wenn in den cache und wenn nicht.
InformationsquelleAutor der Frage F Lekschas | 2012-11-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den template-cache gespeichert ist, in Ihrem browser ist ein javascript-app. Sie können tatsächlich füttern die $cache manuell oder beenden Sie Ihren browser-caching der templates (wie es scheint, dass für die Produktion, cache kein problem sein), mit Entwickler-tools.
Für Kraft Fütterung der cache:
Sehe es in diesem fiddle.
Stoppen Sie Ihren browser caching der templates (zitiert aus dieser Google Groups postenüber dieses problem, genau):
InformationsquelleAutor der Antwort Tiago Roldão
Ich weiß, das ist eine alte Frage, aber hier ist ein einfacher fix, obwohl es ein bisschen ein hack, es funktioniert für mich, und nicht verlangen, dass Sie alles tun, um $templateCache.
Wann immer ich mit diesem problem (ich sehe es in der Richtlinie Vorlagen, aber auch statische JSON-Dateien), füge ich ein query-parameter an das Ende der URL, die geladen werden, wie folgt:
Immer wenn ich eine änderungen an der Vorlage, und es ist nicht Neuladen, ich increment, dass die Zahl am Ende. Da der browser nicht wissen, ob dies könnte bedeuten, etwas besonderes auf dem server, es soll der Versuch unternommen werden, um neu zu laden, die URL geändert, ob es ist oder nicht zwischengespeichert. Dies wird auch sicherstellen, dass die Datei geladen wird, in die Produktionsumgebung.
InformationsquelleAutor der Antwort user4815162342
dann, wenn Sie rufen Sie die refreshTemplate Funktion, die Sie verursachen, die ein re-load
InformationsquelleAutor der Antwort Ran Cohen