我的路由状态遇到了奇怪的问题。例如我的状态:
.state("systemInformation", {
url: '/system_info/:system',
views: {
"content@app": {
controller : 'SystemInformationController',
templateUrl : 'pages/systemInformation.html',
params: {
system : null
}
}
}
})
这工作正常,它会转到页面,加载 Controller ,并且可以访问父 Controller (也正在加载)。我在 index.html 页面中使用 ui-view
,所以我知道这不是问题,因为它可以正常加载 4 个其他 Controller 。
但是当我添加这个状态时:
.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
加载到我的 URL 中,而 $stateProvider
不执行任何操作。我已经三重检查了拼写错误,并且使用 $routeProvider
我在 Controller 路由方面没有遇到任何问题。
有什么我在这里没有看到的吗?没有错误,因为 Controller 没有运行(它已加载,并且与其他状态的格式相同),并且模板路径也正确,所以这也不是原因。
这里是 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 页面。
最佳答案
发现问题了。结果 stateProvider 不喜欢 url 路由中的通配符星号 (*)。我不知道为什么,因为初始的很好,但我想对于多个路由参数,你不能使用通配符。
url: '/system_reg/:system/:survey_page',
现在它可以工作了。
关于javascript - ui-router $stateParams 未加载 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39085338/