templateUrl
akzeptiert eine Funktion als Wert für dynamische Routing-Werte.
Aus der Dokumentation:
"If templateUrl is a function, it will be called with the following parameters:
{Array.} - route parameters extracted from the current $location.path() by applying the current route"
Sie entweder diese Funktion nutzen zu können Ihre if-Anweisung Logik, benimmt sich wie Middleware ausführen, oder eine Funktion anwenden, die die Logik der Fall ist, baut Ihre dynamische Vorlage und gibt es zurück.
$routeProvider
.when('/', {
templateUrl: _ => { //you're not using a dynamic file name here
let route = 'app/views/pages/';
if (user) route += 'home-page.html';
else if (admin) route += 'admin-page.html';
return route;
}
})
Sie können diesen einen Schritt weiter gehen und den Parameter anwenden, der eine Abhängigkeit zu Ihrer URL hinzufügt. Jetzt wird sich die Middleware ändern, da beide den gleichen Wert akzeptieren. Sie müssen also die Funktion ändern, um die Berechtigungen für beide Ebenen zu überprüfen, oder unterschiedliche URL-Bereiche anwenden.
Beispiel mit $http
. Offensichtlich kenne ich Ihr ganzes Schema nicht, um .isUser
, isAdmin
und url/for/permissions
als Dinge zu nehmen, die Sie ändern müssen.
$http.get('/url/for/permissions/').then(results => {
$routeProvider
.when('/', {
templateUrl: _ => { //you're not using a dynamic file name here
let route = 'app/views/pages/';
if (results.isUser) route += 'home-page.html';
else if (results.isAdmin) route += 'admin-page.html';
return route;
}
})
});
Ich habe dies verwendet und habe den folgenden Fehler TypeError: Kann die Eigenschaft 'originalPath' von undefined nicht? –
@MahmoudAbdALKareem 'next' ist die nächste Route (wohin Sie gehen). Versuchen Sie, dieses Objekt zu überprüfen, um zu sehen, was passiert – Mistalis