Ich habe einen wirklich einfachen Anwendungsfall in meiner App, wo ich AngularJS (1.0.8) für das Frontend und Grails für das Backend verwende. Im App-Layout habe ich einen Sprachumschalter, mit dem der Benutzer die Sprache wechseln kann. Wenn Sie die Sprache wechseln, wird eine neue http-Anforderung zum Abrufen der Seite ausgeführt. Grails rendert alle sprachbezogenen Sachen (d. H. Etiketten) richtig übersetzt. Dies funktioniert nur für Chrome, FF und so, aber nicht für IE. IE gibt die richtige Sprache nur für das Layout aus, das von der Hauptanforderung gerendert wird.
Ich habe das Problem gefunden. Ich habe $routeProvider
definiert, wo ich einen Großteil des App-Inhalts geladen habe. Es wird standardmäßig zwischengespeichert, daher lädt der IE templateUrl
von $routeProvider
nicht, weil er sie aus dem Cache lädt:
Was ich nicht verstehe ist, warum es in allen anderen Browsern funktioniert.
Ich habe einen Beitrag gefunden, wie man den Cache löscht, aber sie funktionieren nicht für mich. Gibt es eine Lösung für mich? Wenn nicht, finde ich $routeProvider
für meinen Anwendungsfall völlig nutzlos.
Post habe ich gefunden:
Ich hatte dasselbe Problem mit $ routeProvider. Und ja, der $ templateCache hilft in dieser Situation nicht. Anstatt die echte "Cache" -Quelle zu finden, habe ich den Stempel-Parameter nach der templateUrl hinzugefügt. In meinem Code:
%Vor%Leider habe ich die globale Variable "BuildNumber" benutzt, um mein Leben zu retten. Da ich RequireJS auch für mein AngularJS-Projekt verwende, wird diese "Build-Nummer" auch zu jeder Abhängigkeits-JS-Datei hinzugefügt, indem der Code:
verwendet wird %Vor%Dann muss ich jedes Mal, wenn der JS-Quell- oder Template-HTML-Code geändert wurde, nur diese "Build-Nummer" im globalen Gültigkeitsbereich aktualisieren. Dies ist nur ein Gedanke für zukünftige Updates in der Produktionsumgebung. Hoffe, das hilft.
Die einzige Lösung, die ich gefunden habe, war, den Cache für Ajax-Abfragen vollständig zu deaktivieren. Ich habe die Lösung hier gefunden: Ссылка
%Vor%Ich mag diese Lösung nicht, weil sie das Einlösen von Inhalten, die wirklich statisch sind, deaktiviert. Also, wenn Sie eine bessere Lösung haben, als es zu teilen.
Tags und Links angularjs