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
.
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:
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:
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.
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:
/ * API-Aufruf zum Laden von Daten * /
%Vor%Tags und Links javascript angularjs angular-ui-router