Wie beibehalten optionale Status-parameter auf browser-zurück in den ui-router?

Bin ich mit einem Elternteil Zustand, hat zwei Kinder Stand drinnen, dass ich zeigen werde, der einen Staat auf der Grundlage der URL.

Aus diesen zwei states eine ist, dass man Parameter wie param1 und param2 habe ich verwenden params Möglichkeit, ui-router innerhalb state definition.

Zustand

$stateProvider.state('tabs.account', {
    url: '/account',
    views: {
        'content@tabs': {
            templateUrl: 'account.html',
            controller: function($scope, $stateParams) {
                //This params are internally used to make ajax and show some data.
                $scope.param1 = $stateParams.param1;
                $scope.param2 = $stateParams.param2;
            },
        }
    },
    params: {
        param1: { value: null }, //this are optional param
        param2: { value: null } //because they are not used in url
    }
});

Wenn Sie sich auf meiner route die params-option ist nicht wirklich eingeführt, im inneren der URL, das ist, warum ich überlege mir dann, wie optional.

Problem

Blick auf plunkr, ich habe gezeigt, zwei tabs Konto & Umfrage,

  1. Klicken Sie auf Survey-Registerkarte, dann fügen Sie einige Daten in die textarea angezeigt werden.
  2. Klicken Sie auf Gehen Sie zu Konto das wird passieren diejenigen textarea Werte
    die anderen Konto tab by doing ui-sref="tabs.account({param1: thing1, param2: thing2})" auf den Anker

  3. Nun sehen Sie den param1 & param2 Werte auf html zugewiesenen Umfang von $stateParams

  4. Jetzt wieder Klicken Sie auf Umfrage Registerkarte, dann landest du auf der Seite Umfrage.
  5. Klicken Sie einfach browser, Sie werden feststellen, dass param Wert ist nicht immer null.

Problem Plunkr

Ich glaube, du hast was ich Fragen wollte, warum der optionale parameter Wert wurde nicht gespeichert? wie wurden Sie ein Teil des Staates.

Ich weiß, ich kann das Problem lösen, indem Sie unten zwei Lösungen.

  • Werden, indem ein Dienst, der Daten zwischen zwei Ansichten.
  • Durch hinzufügen von parameter in die URL Staat. wie url: '/account/:param1/:param2', (Aber ich würde nicht dies bevorzugen)

Ich habe bereits versucht, angular-ui-Router sticky Staaten aber das scheint nicht, für mich zu arbeiten. Was ist der bessere Weg, um dieses?

Gibt es eine Möglichkeit, die ich machen kann, meine arbeiten, Irgendwelche Ideen wäre dankbar.

Github Problem Hier der Link

  • Gerade diese github.com/angular-ui/ui-router/issues/1158 über den "Benachrichtigen" - Attribut, das gesetzt werden konnte, false, um zu verhindern, dass Ereignisse wie das Neuladen controller) aber es ist eigentlich nicht funktioniert (bug).
  • danke für den Kommentar..ich werden müssen, um Uhr auf dieses Problem auch 🙁
  • Haben Sie geprüft über die query params statt url-params ? Es kann arbeiten und wird ein wenig weniger seltsam in der url ('/url/route?param1=value&param2=value')
  • Vielen Dank für die Anregung, aber ich nicht wollte, zu tun, in dieser Weise..es ist im Grunde die gleiche Sache, die ich hier mache
  • bitte Kommentar wenn Sie downvote..gibt es keine problem mit einer Frage?
Schreibe einen Kommentar