Gibt es eine Möglichkeit, reloadOnSearch in einem Controller bedingt auszuschalten?

8

Ich habe einen Controller, wo ich manchmal den Speicherort mit $location.search({param1: newParam1Value) aktualisiere.

Wenn ich absichtlich $ location.search in der Steuerung ändere, möchte ich ein Nachladen verhindern. Andernfalls möchte ich das Standardverhalten reloadOnSearch für diese Route / diesen Status beibehalten.

Ich kann reloadOnSearch auf false setzen, wenn ich den Status definiere, aber dann wird es immer falsch sein.

Gibt es eine Möglichkeit, die reloadOnSearch für die Route vom Controller aus umzuschalten? Alternativ, kann ich reloadOnSearch: true beibehalten und einfach das erneute Laden für die eine Instanz verhindern, wo ich es nicht möchte?

Ich verwende ui.router .

    
Justin 06.03.2014, 00:35
quelle

3 Antworten

1

Dies ist nicht direkt über den Routenkonfigurationsblock möglich. Stattdessen müssen Sie reloadOnSearch: false in der Routenkonfiguration festlegen und die Route manuell in Ihrem Controller neu laden, so:

%Vor%     
Evan Drewry 01.07.2014 22:54
quelle
1

Ich brauchte die gleiche Funktionalität, und hier ist, was ich gefunden habe:

Wie bereits an anderer Stelle erwähnt, müssen Sie reloadOnSearch = false in der Route ändern. Aber die meiste Zeit, Sie wollen, dass es sich so verhält, als wäre es auf true eingestellt. Sie möchten nur unter bestimmten Umständen überspringen. Also habe ich das meinem Controller hinzugefügt:

%Vor%

dann werden alle Änderungen an der URL immer noch wie gewohnt neu geladen. Wenn Sie das Neuladen überspringen möchten, rufen Sie updateSearchWithoutReload(key, values); auf und es wird nur für diesen Aufruf übersprungen. Nach dem Überspringen wird es zurückgesetzt, um das Neuladen nicht zu überspringen.

Ich hatte versucht, nur $rootScope.skipNextSearchChangeReload = true und dann $location.search(k, v) und dann $rootScope.skipNextSearchChangeReload = false zu setzen, aber anscheinend hatten sich die Ereignisse nicht durchgesetzt und skipNextSearchChangeReload wurde auf false gesetzt, bevor es übersprungen wurde. Das war also das Beste, was ich mir vorstellen konnte.

    
Cameron 23.07.2014 22:56
quelle
1

Ja !! Sie können reloadOnSearch bedingt verwenden. Wir wissen, dass der Status mit dem $ location.search () -Ereignis neu geladen wird. Wenn Ihr Anwendungsfall so ist, dass Sie in einigen Fällen den Status neu laden möchten und in anderen Fällen nicht, dann verwenden Sie reloadOnSearch wie folgt:

%Vor%

/ * API-Aufruf zum Laden von Daten * /

%Vor%     
Rubi saini 26.05.2015 10:47
quelle