Esta es la primera vez que intento utilizar ui-router.
Aquí está mi 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 puede ver, tengo dos estados. Estoy tratando de registrar un estado como este:
<a ui-sref="register">
<button class="button button-balanced">
Create an account
</button>
</a>
Pero estoy consiguiendo
No se pudo resolver el 'registro' del estado ''
excepción. ¿Cuál es el problema aquí?
Respuestas:
Este tipo de error generalmente significa que algunas partes del código (JS) no se cargaron. Que
ui-sref
falta el estado que está dentro .Hay un ejemplo de trabajo
No soy un experto en iónico, por lo que este ejemplo debería mostrar que funcionaría, pero usé algunos trucos más (padre para pestañas)
Esta es una definición de estado poco ajustada:
Y aquí tenemos la vista principal con pestañas y su contenido:
Tómelo más que un ejemplo de cómo hacerlo funcionar y luego usar el marco iónico de la manera correcta ... Vea ese ejemplo aquí
Aquí hay preguntas y respuestas similares con un ejemplo usando las vistas nombradas (sin duda una mejor solución) problema de enrutamiento iónico, muestra una página en blanco
La versión mejorada con vistas nombradas en una pestaña está aquí: http://plnkr.co/edit/Mj0rUxjLOXhHIelt249K?p=preview
segmentación de vistas nombradas:
fuente
.run ($state) { console.log($states.get()); });
Solo vine aquí para compartir lo que me estaba pasando.
No es necesario especificar el padre, los estados funcionan de una manera orientada al documento, por lo que, en lugar de especificar padre: aplicación, puede cambiar el estado a app.index
EDITAR Advertencia, si desea profundizar en el anidamiento, debe especificar la ruta completa. Por ejemplo, no puedes tener un estado como
sin tener un
o angular lanzará una excepción diciendo que no puede averiguar la ruta. Para resolver eso puedes definir estados abstractos
fuente
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
, ese fue mi problema.url
propiedad del estado intermedio, y luegourl
se agregará la siguiente ruta a la URL de la ruta anterior.Acabo de tener el mismo problema con Ionic.
Resulta que no había nada malo en mi código, simplemente tuve que salir de la sesión de servicio iónico y ejecutar el servicio iónico de nuevo.
Después de volver a la aplicación, mis estados funcionaron bien.
También sugeriría presionar guardar en su archivo app.js varias veces si está ejecutando gulp, para asegurarse de que todo se vuelva a compilar.
fuente
Tuve el mismo problema con el enrutamiento iónico.
La solución simple es usar el nombre del estado, básicamente
state.go(state name)
Y en el controlador puedes usar
$state.go('tab.search');
fuente
Tuve un caso en el que el error fue lanzado por un
Que es obvio. Supongo que esto puede ayudar a alguien en el futuro.
fuente
Como respondió Magus:
Los estados abstractos se pueden usar para agregar un prefijo a todas las URL de los estados secundarios. Pero tenga en cuenta que el resumen todavía necesita una vista de interfaz de usuario para que lo completen sus hijos . Para hacerlo, simplemente puede agregarlo en línea.
Para obtener más información, consulte la documentación: https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views
fuente