我正在尝试使用resolve以确保在屏幕上显示视图状态之前已加载数据。此解析取决于用户在之前状态下所做的选择。
因此,我需要使用参数执行get请求。
问题是我不知道如何在应用程序中设置参数。我试过了
.get('https://.../questions', {params: {gender: $scope.user.gender}})
.get('https://.../questions', {params: {gender: user.gender}})
.get('https://.../questions', {params: {gender: vm.user.gender}})
唯一有效的是:
.get(' https://.../questions',{params:{性别:'男'}})
下方更大的代码段,以提供一些背景信息。
.state('questionnaire', {
url: '/questionnaire',
templateUrl: 'templates/questionnaire.html',
controller: "QuestionnaireController as vm",
resolve: {
practice: function($http){
return $http
.get('https://.../...')
.then (function (data) {
return data;
});
}
}
})
.state('questionnaire.consent', {
url: '/consent',
templateUrl: 'templates/questionnaire-consent.html'
})
.state('questionnaire.questions', {
url: '/questions',
templateUrl: 'templates/questionnaire-questions.html',
resolve: {
questions: function($http, $scope) {
return $http
// Failed Attempts
// .get('https://.../questions', {params: {gender: $scope.user.gender}})
// .get('https://.../questions', {params: {gender: $scope.user.gender}})
// .get('https://.../questions', {params: {gender: user.gender}})
// .get('https://.../questions', {params: {gender: vm.user.gender}})
// Works but incorrectly hard coded
// .get('https://.../questions', {params: {gender: 'Male'}})
.then (
function (res) {
console.log(res.data);
return res;
},
function(errors) {
console.log('Errors', errors);
}
);
}
}
})
答案 0 :(得分:1)
使用$stateParams
服务。
它允许您将参数传递给您的状态,例如,您可以将性别作为参数传递:
.state('questionnaire.questions', {
url: '/questions/:gender', // Gender is the parameter.
templateUrl: 'templates/questionnaire-questions.html',
resolve: {
questions: function($http, $scope, $stateParams) {
// $stateParams.gender is the gender that was given in the url.
使用href时,您可以将性别作为参数:example.com/questions/male
或者使用$state.go
的第二个参数:$state.go('questions', {gender: 'male'});
在ui-router documentation中了解它。