Posso definir uma rota com parâmetros opcionais (mesmo modelo e controlador, mas alguns parâmetros devem ser ignorados se não existirem?
Então, em vez de escrever as duas regras a seguir, tenha apenas uma?
module.config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/users/', {templateUrl: 'template.tpl.html', controller: myCtrl}).
when('/users/:userId', {templateUrl: 'template.tpl.html', controller: myCtrl})
}]);
Algo assim ([este parâmetro é opcional])
when('/users[/:userId]', {templateUrl: 'template.tpl.html', controller: myCtrl})
//note: this previous doesn't work
Não encontrei nada na documentação deles.
angularjs
angularjs-routing
Alexandru R
fonte
fonte
[]
) na versão 1.1.5.[]
. Veja este commit: github.com/angular/angular.js/commit/…Respostas:
Parece que o Angular tem suporte para isso agora.
Dos documentos mais recentes (v1.2.0) para
$routeProvider.when(path, route)
:path
pode conter grupos nomeados opcionais com um ponto de interrogação (:name?
)fonte
.when('/claims/documents/:CLAIMS_ID/:DOCUMENT_NAME?'...
não corresponderá se o URL não tiver uma barra final. Então/claims/documents/1234/
combina, mas/claims/documents/1234
não combina .Como a menção @ g-eorge, você pode fazer assim:
Você também pode fazer o quanto precisar de parâmetros opcionais.
fonte
Consulte a resposta @jlareau aqui: /programming/11534710/angularjs-how-to-use-routeparams-in-generating-the-templateurl
Você pode usar uma função para gerar a sequência do modelo:
fonte
Na verdade, acho que OZ_ pode estar um pouco correto.
Se você possui a rota
'/users/:userId'
e navega para'/users/'
(observe o /),$routeParams
no seu controlador deve haver um objeto que contenhauserId: ""
em 1.1.5. Portanto, o paramateruserId
não é completamente ignorado, mas acho que é o melhor que você conseguirá.fonte