我正在开展一个个人项目,我正在尝试在处理单个州时将ui-view嵌入到另一个项目中。
所以这就是问题,网址有2个参数,第二个参数是可选的,所以如果用户添加第二个参数,我会在我正在加载的页面中显示其他信息。
以下是代码的一部分:
app.js
.state('students', {
url: '/students/:id/grade/:num',
templateUrl: function ($stateParams) {
return $stateParams.students + '.html';
},
controllerProvider: function($stateParams) {
var Ctrlname = $stateParams.students + 'Ctrl';
return Ctrlname;
}
index.html
<ul>
<li><a ui-sref="students({id: '1', grade: ''})">Student 1</a></li>
<li><a ui-sref="students({id: '2', grade: ''})">Student 2</a></li>
</ul>
<div ui-view></div>
1.HTML
<div>
<ul>
<li><a ui-sref="">Math</a></li>
<li><a ui-sref="">English</a></li>
<li><a ui-sref="">History</a></li>
</ul>
所以我在这里的疑问是,如何使用单一状态实现这一目标。我是否必须在app.js上添加其他信息以及我将什么放在1.html文件的ui-sref中?
答案 0 :(得分:0)
这个区块:
templateUrl: function ($stateParams) {
return $stateParams.students + '.html';
},
建议每个学生有几个模板。理想情况下,您应该有一个包含动态内容的模板。
您可以通过简单的ng-if
或ng-show
来实现所需。
所以你的控制器可能有类似的东西:
if ($stateParams.num) {
$scope.gradeNum = $stateParams.num
...
}
在模板中:
<div ng-show="">.....Grade Additional Info</div>