如何找到所有加载的路由?

How to find all loaded routes?

我有一个这样的函数,应该加载一些路由。

.config(function($stateProvider, $urlRouterProvider){

    $stateProvider.state('app', {
      abstract: true,
      templateUrl: "index.html",
    })

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

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


  $urlRouterProvider.otherwise("/");
}) 

但我得到

Error: Could not resolve 'register' from state ''

异常。从我检查的所有其他示例来看,该路由配置看起来不错。但由于某种原因它不起作用。

我怀疑我的路由没有加载,我把 console.logdebuggeralert 函数放在我的 .config 函数中,但是 none被执行。

有什么方法可以列出从 ui-router 加载的所有路由吗?

Disclaimer: I would like to give you a hint. If this answer would not suite, let me know, will delete that. Because obviously, my previous answser is not working for you:

像这样的错误消息的来源可能是什么?

Could not resolve 'register' from state ''

只有两个选项。

  • 未加载具有状态定义的文件。 (可以用一些 console.log 的东西来检查)
  • 文件表示 module 已正确加载,但未被根引用 ng-app="myApp"

我强烈希望,第二种情况是问题所在。这是一个 BROKEN example,它将(在单击按钮后)显示错误:Could not resolve 'register' from state ''

发生了什么。有一个名为"otherStates.js"的文件被加载到index.html

... // 查看上面加载的脚本 // 下面是根模块名称 "myApp" ...

"otherStates.js" 声明模块 "myStates",其中包含所有状态:

// will always be in a console
// because file is loaded
console.log("file is accessed");

angular
 .module('myStates', ['ionic'])
 .config(function($stateProvider, $urlRouterProvider){

    // never reach console, because this module is not used
    console.log("module myStates is not referenced in myApp ");
    console.log("these lines will never be trigerred");

  $stateProvider

  .state('app', {
      abstract: true,
      ...
    })
  ....

所以为什么我们确实会遇到那个错误?如何解决?

简单地说,在script.js(我们的根模块在哪里)我们有这样的声明:

var app = angular.module('myApp', ['ionic'])

这还不够。我们还需要引用 myStates。所以我们必须像这样改变它,一切都会起作用

var app = angular.module('myApp', ['ionic', 'myStates'])

勾选这个broken example