ui-router $ stateParams没有加载控制器

时间:2016-08-22 17:23:38

标签: javascript angularjs

我的路由状态有一个奇怪的问题。例如,我的州:

.state("systemInformation", {
  url: '/system_info/:system',
  views: {
    "content@app": {
     controller : 'SystemInformationController',
     templateUrl : 'pages/systemInformation.html',
     params: {
      system : null
     }
    }
  }
})

这很好用,它进入页面,它加载控制器,它可以访问父控制器(也加载)。我在index.html页面中使用ui-view,所以我知道这不是问题,因为它正在加载其他4个控制器。

但是当我添加这个状态时:

.state("systemRegistration", {
  url: '/system_reg/:system*/:survey_page*',
  views: {
    "content@app": {
     controller : 'SystemRegistrationController',
     templateUrl : 'pages/systemRegistration.html',
     params: {
      system : null,
      survey_page : null
     }
    }
  }
})

所有这一切都是将字符串/#/system_reg/new_system/Basic%20System%20Information加载到我的网址中,$stateProvider什么都不做。我已经三次检查了拼写错误,而$routeProvider我对控制器路由没有任何问题。

我有没有在这里看到的东西?没有错误,因为控制器没有运行(它被加载,它的格式与其他状态相同),模板路径也是正确的,所以这也不是原因。

以下是HTML链接:

<li><a href="#/system_reg/new_system/Basic System Information" ng-click="clearRegSurvey()">Register a System</a></li>

<li><a href="#/system_search">Find a System</a></li>

注意:系统搜索也有一个状态路由,即使没有ui-sref也能正常工作。这就是为什么我很困惑。此外,ui-sref不适用于sys reg页面。

1 个答案:

答案 0 :(得分:2)

发现了这个问题。原来,stateProvider不喜欢url路由中的通配符星号(*)。我不确定为什么,因为初始版本没问题,但我想不止一个路由参数你不能使用通配符。

url: '/system_reg/:system/:survey_page',

现在它有效。