Czy mogę ustawić trasę z opcjonalnymi parametrami (ten sam szablon i kontroler, ale niektóre parametry należy zignorować, jeśli nie istnieją?
Więc zamiast pisać poniższe dwie zasady, masz tylko jedną?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Coś takiego ([ten parametr jest opcjonalny])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
Nie mogłem znaleźć niczego w ich dokumentacji.
angularjs
angularjs-routing
Alexandru R
źródło
źródło
[]
) w wersji 1.1.5.[]
. Zobacz to zatwierdzenie: github.com/angular/angular.js/commit/ ...Odpowiedzi:
Wygląda na to, że Angular obsługuje to teraz.
Z najnowszej (wersja 1.2.0) dokumentów dla
$routeProvider.when(path, route)
:path
może zawierać opcjonalne nazwane grupy ze znakiem zapytania (:name?
)źródło
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
nie będzie pasować, jeśli adres URL nie ma końcowego ukośnika. Więc/claims/documents/1234/
pasuje, ale/claims/documents/1234
nie.Podobnie jak wzmianka @ g-eorge, możesz zrobić to tak:
Możesz także zrobić tyle, ile potrzebujesz opcjonalnych parametrów.
źródło
Zobacz odpowiedź @jlareau tutaj: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Możesz użyć funkcji do wygenerowania ciągu szablonu:
źródło
Właściwie myślę, że OZ_ może być nieco poprawne.
Jeśli masz trasę
'/users/:userId'
i nawigujesz do'/users/'
(zwróć uwagę na końcowe /),$routeParams
w kontrolerze powinien znajdować się obiekt zawierającyuserId: ""
w 1.1.5. Więc nie, parametruserId
nie jest całkowicie ignorowany, ale myślę, że to najlepsze, co dostaniesz.źródło