javascript - ui-router $stateParams 未加载 Controller

标签 javascript angularjs

我的路由状态遇到了奇怪的问题。例如我的状态:

.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/

相关文章:

javascript - EaselJS getObjectUnderPoint 和缩放 CSS 问题

javascript - 如何在angularJS中验证具有相同名称的多个表单

javascript - 如何链式 promise

javascript - Mobile Safari 在加载 JS 文件时挂起

javascript - Angular.js $compile 不起作用

javascript - 如何在 vue js html 中将到期时间显示为报价的计时器?

angularjs - 修复第 3 方 API 'Access-Control-Allow-Origin' 错误

javascript - 根据按键上的数据列表验证输入文本数据

javascript - 执行文件太多次?

javascript - 如果用户收到 else 语句,是否可以刷新页面或禁用下一个文本字段?