Usando angular-ui-router, como posso usar o método de outra forma em $ stateProvider ou como posso usá-lo?
95
Usando angular-ui-router, como posso usar o método de outra forma em $ stateProvider ou como posso usá-lo?
$stateProvider.otherwise
, então isso vai me ajudar)Respostas:
Você não pode usar apenas
$stateProvider
.Você precisa injetar
$urlRouterProvider
e criar um código semelhante a:O
/otherwise
url deve ser definido em um estado como de costume:Veja este link onde ksperling explica
fonte
$stateProvider
. É menos trabalhoso se você quiser apenas exibir um modelo, mas não redirecionar. Eu prefiro a resposta de @juan-hernandez.otherwise
(neste caso'/otherwise'
) tem que corresponder ao nome do estado (o primeiro parâmetro para.state
) ou o valor daurl
opção?Você pode
$stateProvider
usar a sintaxe catch all ("*path"
). Você só precisa adicionar uma configuração de estado na parte inferior da sua lista, como esta:Todas as opções são explicadas em https://github.com/angular-ui/ui-router/wiki/URL-Routing#regex-parameters .
O bom dessa opção, ao contrário
$urlRouterProvider.otherwise(...)
, é que você não é forçado a uma mudança de local.fonte
you're not forced to a location change
:?/this/does/not/exist
, a URL permanecerá assim na barra de endereço. A outra solução levará você a/otherwise
Você também pode injetar manualmente $ state na função de outra forma, que pode então navegar para um estado não url. Isso tem a vantagem de o navegador não alterar a barra de endereços, o que é útil para lidar com o retorno a uma página anterior.
fonte
Ok, o momento bobo em que você percebe que a pergunta que você fez já foi respondida nas primeiras linhas do código de exemplo! Basta dar uma olhada no código de amostra.
Dê uma olhada aqui.
fonte
Eu só quero comentar as ótimas respostas que já foram fornecidas. A versão mais recente do
@uirouter/angularjs
marcou a classeUrlRouterProvider
como obsoleta. Eles agora recomendam usar em seuUrlService
lugar. Você pode obter o mesmo resultado com a seguinte modificação:Métodos adicionais: https://ui-router.github.io/ng1/docs/1.0.16/interfaces/url.urlrulesapi.html
fonte
As referências de respostas aceitas
angular-route
perguntam sobreui-router
. A resposta aceita usa o "monolítico"$routeProvider
, que requer ongRoute
módulo (enquantoui-router
precisa doui.router
módulo)A resposta com a pontuação mais alta usa
$stateProvider
, em vez disso, e diz algo como.state("otherwise", { url : '/otherwise'... })
, mas não consigo encontrar nenhuma menção de "caso contrário" na documentação vinculada . No entanto, vejo que$stateProvider
é mencionado nesta resposta onde diz:É aí que minha resposta pode ajudá-lo. Para mim, foi suficiente usar
$urlRouterProvider
assim:Minha sugestão é consistente com a
ui-router
documentação ( esta revisão específica ), onde inclui um uso semelhante do.when(...)
método (a primeira chamada para a função):fonte