如果我目前在子路由器和刷新浏览器,我无法加载子路由器

时间:2017-07-25 16:50:08

标签: angularjs

这是我的路由器。

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: ''
                    }
                }
            };

如果我目前在子路由器和刷新浏览器中,我无法加载子路由器(子模板)? 如果我不在儿童路由器中,它可以正常工作。

1 个答案:

答案 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的更多信息。