无法parsing“…”状态

这是我第一次尝试使用ui路由器。

这是我的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' }); }) 

正如你所看到的,我有两个状态。 我正在尝试注册这样的状态:

 <a ui-sref="register"> <button class="button button-balanced"> Create an account </button> </a> 

但是我越来越

无法parsing从状态“注册”

例外。 这里有什么问题?

这种错误通常意味着(js)代码的一部分没有被加载。 ui-sref里面的状态丢失了。

有一个工作的例子

我不是离子的专家,所以这个例子应该表明它会工作,但我使用了一些更多的技巧(父母的标签)

这是一个调整的状态def

 .config(function($stateProvider, $urlRouterProvider){ $urlRouterProvider.otherwise("/index.html"); $stateProvider .state('app', { abstract: true, templateUrl: "tpl.menu.html", }) $stateProvider.state('index', { url: '/', templateUrl: "tpl.index.html", parent: "app", }); $stateProvider.state('register', { url: "/register", templateUrl: "tpl.register.html", parent: "app", }); $urlRouterProvider.otherwise('/'); }) 

在这里,我们拥有带有选项卡的父视图及其内容:

 <ion-tabs class="tabs-icon-top"> <ion-tab title="Index" icon="icon ion-home" ui-sref="index"> <ion-nav-view name=""></ion-nav-view> </ion-tab> <ion-tab title="Register" icon="icon ion-person" ui-sref="register"> <ion-nav-view name=""></ion-nav-view> </ion-tab> </ion-tabs> 

再举一个例子,如何使它运行,然后使用ionic framework正确的方式…检查这个例子

这里是类似的问答与一个例子使用命名的意见(当然更好的解决scheme) 离子布线的问题,显示空白页面

在选项卡中的命名视图的改进版本在这里: http : //plnkr.co/edit/Mj0rUxjLOXhHIelt249K?p=preview

  <ion-tab title="Index" icon="icon ion-home" ui-sref="index"> <ion-nav-view name="index"></ion-nav-view> </ion-tab> <ion-tab title="Register" icon="icon ion-person" ui-sref="register"> <ion-nav-view name="register"></ion-nav-view> </ion-tab> 

定位命名的意见:

  $stateProvider.state('index', { url: '/', views: { "index" : { templateUrl: "tpl.index.html" } }, parent: "app", }); $stateProvider.state('register', { url: "/register", views: { "register" : { templateUrl: "tpl.register.html", } }, parent: "app", }); 

刚来这里分享发生在我身上的事情。
您不需要指定父项,状态以文档为导向的方式工作,而不是指定parent:app,您可以将状态更改为app.index

 .config(function($stateProvider, $urlRouterProvider){ $urlRouterProvider.otherwise("/index.html"); $stateProvider.state('app', { abstract: true, templateUrl: "tpl.menu.html" }); $stateProvider.state('app.index', { url: '/', templateUrl: "tpl.index.html" }); $stateProvider.state('app.register', { url: "/register", templateUrl: "tpl.register.html" }); 

编辑警告,如果你想深入嵌套,完整的path必须指定。 例如,你不能有一个像

 app.cruds.posts.create 

没有一个

 app app.cruds app.cruds.posts 

或angular将会抛出一个exception,说它无法找出溃败。 要解决这个问题,你可以定义抽象状态

 .state('app', { url: "/app", abstract: true }) .state('app.cruds', { url: "/app/cruds", abstract: true }) .state('app/cruds/posts', { url: "/app/cruds/posts", abstract: true }) 

我刚刚与Ionic有同样的问题。

事实certificate,我的代码没有什么错,我只是不得不退出离子服务会议,再次运行离子发球。

回到应用程序后,我的状态工作正常。

我也build议按下保存你的app.js文件几次,如果你正在运行吞噬,以确保一切都得到重新编译。

我遇到了一个错误是由一个

 $state.go(''); 

这是显而易见的。 我想这可以帮助未来的人。

与Ionic路由有相同的问题。

简单的解决办法是使用state.go(state name) – 基本上state.go(state name)

 .state('tab.search', { url: '/search', views: { 'tab-search': { templateUrl: 'templates/search.html', controller: 'SearchCtrl' } } }) 

在控制器中,你可以使用$state.go('tab.search');