Das sollte einfach sein, aber ich kann es einfach nicht herausfinden.UI-Router leer Param verursacht Navigation zur falschen Route
Ich habe zwei Routen:
$stateProvider
.state('users', {
url: '/users',
views: {'@': {
templateUrl: 'templates/users.tpl.html',
controller: 'UsersCtrl as users'
}}
})
.state('users.edit', {
url: '/{userId}',
views: {'@': {
templateUrl: 'templates/editUser.tpl.html',
controller: 'EditUserCtrl as editUser'
}}
});
Dies funktioniert gut, wenn Sie einen ui-Sref oder $ state.go verwenden, um den „Benutzer“ Zustand nach dem Namen zu navigieren, aber wenn Sie geben domain.com/ Benutzer/In die URL-Leiste geht es mit einem leeren Parameter userId in den Bearbeitungszustand, obwohl hinter dem Trailing Stash nichts steht.
Normalerweise wäre das kein Problem, aber wenn die EditUser-Route ohne userId ausgelöst wird, treten Konsolenfehler auf, die zu beheben wären.
Ist das leicht zu reparieren?
Versuchen entweder die ersten 'url' zu'/users/'(fügen Sie einen Schrägstrich) oder ändern Sie den zweiten' url' zu '/ users/{userId} Ändern'. Ich vermute, dass einer davon den anderen auf Basis des '/ users /' -Teils des URL-Pfades verwirrt. –
Die erste stoppt/Benutzer arbeiten ohne Schrägstrich und verursacht einen doppelten Schrägstrich, wenn Sie auf die zweite Route und der zweite macht die URL/Benutzer/Benutzer. Nur um klar zu sein, ich brauche es, um zur übergeordneten Route zu gehen, wenn die URL "/ users" oder "/ users /" ist, aber wenn es "/ users/so etwas" ist, dann muss es zur Bearbeitungsseite gehen. – jonhobbs