在我的应用程序中,我正在加载学生资源,然后我想访问作业资源并检索分配给学生的作业详细信息。
我如何设置学生状态
.state ('student', {url: '/student/{studentId}', templateUrl: 'partials/student.html', resolve:
{student: function (Student, $stateParams) {
return Student.get({id:$stateParams.studentId}).$promise;
}}, controller: function ($scope, student, $rootScope) {
$scope.Student = student;
$rootScope.jobId = $scope.Student.field_313_raw[0].id;
console.log($rootScope.jobId);
} })
包含作业的 View 是子状态:
.state ('student.placement', {url: '/placement', templateUrl: 'partials/student-placement.html', resolve:
{job: function (Job, $rootScope) {
return Job.get({id:$rootScope.jobId});
}},
controller: function($scope, job) {
$scope.job = job;
}
})
如果我从我的选项卡导航到“展示位置”选项卡,我就可以很好地获取职位详细信息:
XHR finished loading: GET "https://api.knackhq.com/v1/objects/object_10/records/534535affca419b3256c2f4e".
但是,如果我刷新 Student.placement 状态,而不是浏览选项卡,它不会加载 $rootScope.jobId,因此我的 GET 请求如下所示:
XHR finished loading: GET "https://api.knackhq.com/v1/objects/object_10/records
我认为我可以使用解析属性来解决这个问题,因此为什么现在这样设置。我想也许 rootScope 在进行 GET 调用之前尚未填充,但如果我控制台记录它,它会在 GET 调用之前显示:
52cc92ac7431594423002cd4 app.js:37
XHR finished loading: GET "https://api.knackhq.com/v1/objects/object_10/records".
我的目标是即使在页面刷新后也能够加载学生的特定作业(用于书签目的)
有什么想法/建议吗?
最佳答案
我了解到范围会在页面重新加载时重建,并且能够简单地将学生对象直接加载到作业解析中。
job: function (Job, student) {
return Job.get({id:student.field_313_raw[0].id});
}
关于javascript - $rootScope 和 UI-Router Resolve 的问题未持续存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003127/