我的路由状态有一个奇怪的问题。例如,我的州:
.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页面。
答案 0 :(得分:2)
发现了这个问题。原来,stateProvider不喜欢url路由中的通配符星号(*)。我不确定为什么,因为初始版本没问题,但我想不止一个路由参数你不能使用通配符。
url: '/system_reg/:system/:survey_page',
现在它有效。