这是我的路由器。
var studentEnroll = {
name: 'student-enroll',
label: "Enroll Student",
url: '^/home/students/enroll',
params: {
studentId: { dynamic: true }
},
templateUrl: stateRoute + 'studentEnroll/student-enroll-base.tpl.html',
controller: 'StudentEnrollCtrl',
controllerAs: 'studentEnrollController',
data: {
authorizedRoles: ['admin']
},
breadcrumbParent: breadcrumbParent
};
var enrollSelectStudent = {
name: 'enroll-select-student',
label: "Select Student",
parent: studentEnroll,
views: {
'': {
component: "enrollStudentSelect"
},
'student-info': {
templateUrl: stateRoute + 'studentEnroll/step-student/student-info.tpl.html',
controller: ''
}
}
};
如果我目前在子路由器和刷新浏览器中,我无法加载子路由器(子模板)? 如果我不在儿童路由器中,它可以正常工作。
答案 0 :(得分:0)
我无法加载子路由器模板的原因是因为如果我在子路由器中,当我点击元素时,ui-sref
将无效。
<li><a ui-sref="student-enroll({studentId:null})" ng-click="studentController.studentFunction()">Enroll Student</a></li>
所以,这就是我解决这个问题的方法。 我使用ForceReload作为ui-router。
我从元素中删除了ui-sref
。然后我在控制器功能中处理路由。
所以,我的studentFunction()将是:
function studentFunction()
{
if ($state.current.name !== 'enroll-select-student') {
$state.go('student-enroll', { studentId: null }, { reload: true });
}
}
请查看here以获取有关ui-router中ForceReload的更多信息。