2016-03-25 7 views
1

Also habe ich diesen Code für den Zugriff auf Daten aus der JSON-Datei.Angular sieht keine Änderungen in der JSON-Datei

taskAppControllers.controller('MainMenuCtrl', ['$scope','$http', 
function($scope, $http){ 
    $http.get('data/main-menu.json').success(function(data){ 
    $scope.mainMenuOptions = data 
    }); 
}]); 

Alles ist in Ordnung. Aber wenn ich JSON-Dateien ändere, bleibt alles so wie es war. Wenn ich die JSON-Datei umbenenne und darauf zugreife, werden aktualisierte Daten angezeigt, und wenn ich sie später umbenenne, wird die Ausgabe von JSON angezeigt, bevor sie bearbeitet wurde. Es speichert wahrscheinlich Daten im Browserspeicher oder etwas ähnliches. Es ist Cache-Problem. Wie repariere/setze ich es zurück?

Antwort

2

Ton wie Caching-Problem, versucht Zufallsparameter an die URL angehängt wird, zu zwingen, eine neue Kopie vom Server holen:

$http.get('data/main-menu.json?' + Math.random()) 
2

Ich glaube nicht, dass dies tatsächlich ein Winkel-spezifisches Problem ist. Ihr Browser würde dies wahrscheinlich zwischenspeichern.

Wenn main-menu.json sollte statisch sein, können Sie nur Ctrl + F5 anstelle von F5 während Ihrer Debug-Sitzungen tun. Wenn es aktualisiert werden muss, können Sie entweder Ihre Caching-bezogenen Antwortheader ändern, um dem Browser mitzuteilen, dass sie nicht zwischenspeichern soll, oder Sie können der Anforderung einen "Cache-Buster" hinzufügen, indem Sie einen Zeitstempel als Anforderungsparameter hinzufügen. Das ist jedoch nicht der bevorzugte Weg, um damit umzugehen.

+0

Ich stimme zu, es ist Cache-Problem und dessen Browser verwandt. (wenn ich den gleichen Pfad in verschiedenen Browsern öffne, wird dieser tatsächlich aktualisiert). Also habe ich versucht zu finden, wie man Angular dieses Thema überspringen lässt, etwas wie Alon Eitan in der Antwort oben vorgeschlagen. – Kunok

0

Angenommen, ich verstehe Sie richtig, wird Angular nicht dynamisch in der Art und Weise, wie Sie erwarten, aktualisieren. Es wird nur aktualisiert, wenn Sie die Seite neu laden oder wenn Sie es codieren, um die Daten vom Server neu zu laden, zB den $ http-Dienst aufrufen.

Wahrscheinlich möchten Sie den Server abfragen, um zu überprüfen, ob sich die Daten ändern, oder SignalR verwenden, um die neuen Daten an den Browser "zu übertragen".

Verwandte Themen