Kann ich eine Route mit optionalen Parametern festlegen (gleiche Vorlage und Controller, aber einige Parameter sollten ignoriert werden, wenn sie nicht vorhanden sind?
Haben Sie also nur eine, anstatt die folgenden zwei Regeln zu schreiben?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
So etwas in der Art ([dieser Parameter ist optional])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
Ich konnte nichts in ihrer Dokumentation finden.
angularjs
angularjs-routing
Alexandru R.
quelle
quelle
[]
in Version 1.1.5 (ohne ) ignoriert .[]
. Siehe dieses Commit: github.com/angular/angular.js/commit/…Antworten:
Es sieht so aus, als ob Angular dies jetzt unterstützt.
Aus den neuesten (v1.2.0) Dokumenten für
$routeProvider.when(path, route)
:path
kann optional benannte Gruppen mit einem Fragezeichen (:name?
) enthaltenquelle
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
Sie stimmt nicht überein, wenn die URL keinen abschließenden Schrägstrich enthält. Also/claims/documents/1234/
passt, aber/claims/documents/1234
nicht.Wie @ g-eorge erwähnen, können Sie es so machen:
Sie können auch so viel machen, wie Sie optionale Parameter benötigen.
quelle
Die Antwort von @jlareau finden Sie hier: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Sie können eine Funktion verwenden, um die Vorlagenzeichenfolge zu generieren:
quelle
Eigentlich denke ich, dass OZ_ etwas richtig sein kann.
Wenn Sie die Route haben
'/users/:userId'
und zu navigieren'/users/'
(beachten Sie das nachfolgende /),$routeParams
sollte sich in Ihrem Controller ein Objekt befinden, dasuserId: ""
in 1.1.5 enthalten ist. Nein, der ParameteruserId
wird nicht völlig ignoriert, aber ich denke, es ist das Beste, was Sie bekommen werden.quelle