Ionic - Neu laden und neue Daten in ng-repeat anzeigen, wenn Sie auf Zurück klicken

8

Hintergrund

Ich habe eine ng-repeat -Liste, die zu einer Detailseite führt (die eine Zurück-Schaltfläche hat). Die Variable $scope.items wird von einer get-Anfrage geladen, die beim ersten Laden der Seite mit meiner Funktion refreshItems() auftritt.

Das Problem

Wenn Sie auf der Detailseite auf die Zurück-Schaltfläche klicken, werden Sie zur richtigen Seite zurückgeleitet, aber die Liste wird nicht aktualisiert. Ich brauche diese Liste zu aktualisieren, damit die neuen Elemente geladen und angezeigt werden.

versuchte Lösung

Ich dachte, ich könnte einfach die Zurück-Schaltfläche an eine ng-click -Funktion anschließen, die ionicHistory verwendet, um zurückzugehen, und dann meine refreshItems() -Funktion aufrufen; Dies lädt die Elemente auf der ersten Seite jedoch nicht neu.

Der obige Versuch geht auf die letzte Seite zurück und löst die Funktion refreshItems() aus (und die neuen Daten werden geladen, was ich dank% co_de sehen kann % Statements), aber ich vermute, dass das ng-repeat neu erstellt werden muss. Ich habe einige Informationen zu console.log() sowie $scope.$apply() gefunden, aber keine von beiden hat das Problem behoben, als ich sie am Ende meiner Funktion $route.reload() platziert habe.

Codeauszüge

controller.js

%Vor%

Hauptseite HTML

%Vor%

Zurück auf der Detailseite

%Vor%

Mögliche Richtung?

Ich habe eine goBack() auf der Hauptseite, die refresher aufruft - und aktualisiert sie korrekt. Das Problem ist ganz sicher, wenn ich versuche, die Aktualisierung entweder mit refreshItems() oder $ionicHistory.goBack() zu paaren. Gibt es eine Möglichkeit, den Refresher (nach / beim Laden) programmgesteuert aufzurufen, da das direkte Aufrufen der Funktion, die Refresher aufruft, nicht funktioniert?

    
Chad 09.03.2015, 14:51
quelle

4 Antworten

2

Ich habe eine Lösung dafür gefunden!

Die Lösung besteht darin, die Funktion $scope.$on('$stateChangeSuccess') zu verwenden. Überprüfe entweder die Ansicht von / nach mit Funktionsparametern oder verwende $location.path() :

%Vor%     
Chad 10.03.2015, 16:50
quelle
29

Setzen Sie das Cache-Flag in ionicConfigProvider . Deaktivieren Sie den Cache innerhalb des Statusanbieters wie folgt:

%Vor%

Einzelheiten finden Sie im Handbuch .

    
9nix00 11.04.2015 08:59
quelle
9

Alle ionischen Ansichten sind zwischengespeichert ; Verhindern Sie das Zwischenspeichern wie folgt:

%Vor%

Zum Beispiel:

%Vor%     
Toxus 09.03.2015 22:42
quelle
1

Sie können ein Ereignis auch von der Detailseite aus senden und auf dieses Ereignis im Auflistungscontroller warten.

Ссылка

    
gilles_yvetot 17.07.2015 15:16
quelle