Esta é a primeira vez que tento usar o ui-router.
Aqui está meu app.js
angular.module('myApp', ['ionic'])
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) {
cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);
}
if(window.StatusBar) {
StatusBar.styleDefault();
}
});
})
.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise("/index.html");
$stateProvider.state('index', {
url: '/'
template: "index.html",
controller: 'loginCtrl'
});
$stateProvider.state('register', {
url: "/register"
template: "register.html",
controller: 'registerCtrl'
});
})
Como você pode ver, tenho dois estados. Estou tentando registrar um estado assim:
<a ui-sref="register">
<button class="button button-balanced">
Create an account
</button>
</a>
Mas estou conseguindo
Não foi possível resolver o 'registro' do estado ''
exceção. Qual é o problema aqui?
Respostas:
Esse tipo de erro geralmente significa que algumas partes do código (JS) não foram carregadas. Que o estado de dentro
ui-sref
está faltando.Há um exemplo de trabalho
Não sou um especialista em iônica, então este exemplo deve mostrar que funcionaria, mas usei mais alguns truques (pai para guias)
Esta é uma definição de estado um pouco ajustada:
E aqui temos a visualização pai com guias e seu conteúdo:
Pegue mais do que um exemplo de como fazê-lo funcionar e depois usar a estrutura iônica da maneira certa ... Veja esse exemplo aqui
Aqui está uma pergunta e resposta semelhante com um exemplo usando o problema de roteamento iônico de visualizações nomeadas (com certeza uma solução melhor) , mostra a página em branco
A versão aprimorada com visualizações nomeadas em uma guia está aqui: http://plnkr.co/edit/Mj0rUxjLOXhHIelt249K?p=preview
segmentação de visualizações nomeadas:
fonte
.run ($state) { console.log($states.get()); });
Só vim aqui para compartilhar o que estava acontecendo comigo.
Você não precisa especificar o pai, os estados funcionam de maneira orientada a documentos, então, em vez de especificar pai: app, você pode apenas alterar o estado para app.index
EDIT Atenção, se você quiser se aprofundar no aninhamento, o caminho completo deve ser especificado. Por exemplo, você não pode ter um estado como
sem ter um
ou angular lançará uma exceção dizendo que não consegue descobrir a rota. Para resolver isso, você pode definir estados abstratos
fonte
EDIT Warning, if you want to go deep in the nesting, the full path must me specified. For example, you can't have a state like
, esse era o meu problema.url
propriedade do estado do meio, e então a rota a seguirurl
será anexada a o URL do trajeto anterior.Acabei de ter o mesmo problema com o Ionic.
Acontece que não havia nada de errado com meu código, simplesmente tive que encerrar a sessão de serviço iônico e executar o serviço iônico novamente.
Depois de voltar para o aplicativo, meus estados funcionaram bem.
Também sugiro pressionar salvar no arquivo app.js algumas vezes se estiver executando o gulp, para garantir que tudo seja recompilado.
fonte
Tive o mesmo problema com o roteamento Ionic.
Uma solução simples é usar o nome do estado - basicamente
state.go(state name)
E no controlador você pode usar
$state.go('tab.search');
fonte
Tive um caso em que o erro foi lançado por um
O que é óbvio. Acho que isso pode ajudar alguém no futuro.
fonte
Como respondido por Magus:
Os estados abstratos podem ser usados para adicionar um prefixo a todos os urls de estado filho. Mas observe que o abstrato ainda precisa de uma visão-ui para que seus filhos sejam preenchidos . Para fazer isso, você pode simplesmente adicioná-lo embutido.
Para obter mais informações, consulte a documentação: https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views
fonte