AngularJS路由附加了错误的目录名称

时间:2015-07-10 19:23:43

标签: javascript html angularjs angular-ui-router

当我们的一个开发人员离开并且它正在慢慢移动时,我被置于这个AngularJS项目(我通常是一个python / Java dev)。

我正在使用AngularJS v1.0.8。是的,我知道它已经过时了,我计划并将其转换为最新的稳定版本,一旦我现在可以获得完全正常的版本。

我正处于导航行为奇怪的部分。我有这两种形式与他们尊重的控制器,应该从索引页面链接。

奇怪的是,这个代码在旧系统上运行得很好,AFAIK在后端或前端没有任何变化。

以下是链接/加载其他页面的index.html页面部分。

<div id="nav" ng-controller="navController" class="wrap">
    <div class="container">
    <ul>
      <li><a ui-sref="form.choose" ui-sref-active="active">Available Courses</a></li>
      <li><a ui-sref="form.review" ui-sref-active="active">My Submissions</a></li>
      <!-- <li><a href="#">Approve Submissions</a></li> -->
      <!-- <li ng-show="session.isAdmin()"><a href="#">Admin</a></li> -->
      <li ng-show="session.isAdmin()"><a ui-sref="reports" ui-sref-active="active">Reports</a></li>
    </ul>
  </div>
  </div>

这是视图的主目录结构......

└── views
    ├── form
    │   ├── form.choose.tpl.html
    │   ├── form.done.tpl.html
    │   ├── form.edit.tpl.html
    │   ├── form.review.tpl.html
    │   ├── form.tpl.html
    │   └── rubric.directive.tpl.html
    ├── home
    │   └── home.tpl.html
    └── reports
        └── reports.tpl.html

尝试超链接时发生的情况是,它会在链接的开头附加一个额外的 /表单

404 error for forms/view/form link

所以在这一点上,我只想弄清楚错误发生的位置。

  1. 'ref'
  2. 的HTML代码错误
  3. Bad AngularJS路由代码
  4. 错误的目录结构

1 个答案:

答案 0 :(得分:1)

这可能是嵌套状态的影响,而不是正确设置state.url。例如,您已将状态定义为:

.config(function config($stateProvider) {
  $stateProvider.state('form', {
    url: '/form'
  })
  .state('form.choose', {
    url: '/form/choose'
  })
  .state('form.review', {
    url: '/review'
  });
})

Ui-router会将选择和审核视为表单的子状态。这会自动附加它的url作为其子项的前缀。然后form.choose状态的sref将是&#39; / form / form / choose&#39;,其中form.review状态将是&#39; / form / review&#39;。

希望这有帮助!

编辑:还要确保ui-router的版本在您的系统与旧系统之间保持一致。可能是旧版本在实施子状态之前使用了一个版本,这就是它运行的原因。