当我们的一个开发人员离开并且它正在慢慢移动时,我被置于这个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
尝试超链接时发生的情况是,它会在链接的开头附加一个额外的 /表单。
所以在这一点上,我只想弄清楚错误发生的位置。
答案 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的版本在您的系统与旧系统之间保持一致。可能是旧版本在实施子状态之前使用了一个版本,这就是它运行的原因。