Javascript $rootScope和UI路由器解析未持久化的问题
在我的应用程序中,我正在加载一个学生资源,然后我想访问该工作资源并检索分配给该学生的工作详细信息 我是如何建立学生国的Javascript $rootScope和UI路由器解析未持久化的问题,javascript,angularjs,Javascript,Angularjs,在我的应用程序中,我正在加载一个学生资源,然后我想访问该工作资源并检索分配给该学生的工作详细信息 我是如何建立学生国的 .state ('student', {url: '/student/{studentId}', templateUrl: 'partials/student.html', resolve: {student: function (Student, $stateParams) { return Student.get({id:$stateParams.s
.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);
} })
包含作业的视图是子状态:
.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
我想我可以用resolve属性来解决这个问题,所以现在就这样设置它。我想可能在进行GET调用之前没有填充rootScope,但是如果我将其记录下来,它会在GET调用之前显示:
52cc92ac7431594423002cd4 app.js:37
XHR finished loading: GET "https://api.knackhq.com/v1/objects/object_10/records".
我的目标是即使在页面刷新后也能加载学生的特定作业(用于书签)
有什么想法/建议吗?我了解到在重新加载页面时会重新构建作用域,并且可以直接将student对象加载到作业解析中
job: function (Job, student) {
return Job.get({id:student.field_313_raw[0].id});
}