AngularJS - 如何将作用域变量传递给服务?
AngularJS - how to pass a scope variable to a service?
这是我的控制器,其中有一个我想在我的服务中使用的变量,以便从服务器访问一些 JSON 数据。
我的控制器部分:
1) 从服务器获取 API 密钥(工作并将密钥记录到控制台):
AuthenticationService.getData()
.then(function(result) {
$scope.apiKey = result;
console.log($scope.apiKey);
});
2) 想把key传递给service,以便访问数据:
DrawService.getData($scope.apiKey)
.then(function(result) {
$scope.numbers = result.data;
console.log($scope.numbers);
});
服务:
app.factory('AuthenticationService', function($http) {
return {
getData: function() {
return $http.get('http://game.mywebsite.com/start/?token=someNumber&sessionId=someNumber')
.then(function(result) {
return result.data;
}
);
}
}
app.factory('DrawService', function($http) {
return {
getData: function(apiKey) {
var key = apiKey;
console.log(key);
return $http.get('http://game.mywebsite.com/draw/?token='+apiKey)
.then(function(result) {
return result.data;
});
}
}
someNumber 是提供给我的号码,没错。
myWebsite.com 是一个网站示例,我想从中获取 JSON 数据。
那么,如何将 $scope.apiKey 传递给服务而不返回未定义的值?
当你得到AuthenticationService.getData()
的响应时你需要调用DrawService.getData
方法,这只是意味着当你有apiKey
时你应该调用DrawService方法
AuthenticationService.getData()
.then(function(result) {
$scope.apiKey = result;
console.log($scope.apiKey);
DrawService.getData($scope.apiKey)
.then(function(result) {
$scope.numbers = result.data;
console.log($scope.numbers);
});
});
所以要明确一点,您 可以 将 $scope 变量传递给服务 - 这里的问题是您试图在 APIkey 被访问之前访问 $scope.apiKey从身份验证服务返回给您。为确保数据在使用前得到解析,只需在 AuthenticationService 的 .then()
中调用 DrawService。
这是我的控制器,其中有一个我想在我的服务中使用的变量,以便从服务器访问一些 JSON 数据。
我的控制器部分:
1) 从服务器获取 API 密钥(工作并将密钥记录到控制台):
AuthenticationService.getData()
.then(function(result) {
$scope.apiKey = result;
console.log($scope.apiKey);
});
2) 想把key传递给service,以便访问数据:
DrawService.getData($scope.apiKey)
.then(function(result) {
$scope.numbers = result.data;
console.log($scope.numbers);
});
服务:
app.factory('AuthenticationService', function($http) {
return {
getData: function() {
return $http.get('http://game.mywebsite.com/start/?token=someNumber&sessionId=someNumber')
.then(function(result) {
return result.data;
}
);
}
}
app.factory('DrawService', function($http) {
return {
getData: function(apiKey) {
var key = apiKey;
console.log(key);
return $http.get('http://game.mywebsite.com/draw/?token='+apiKey)
.then(function(result) {
return result.data;
});
}
}
someNumber 是提供给我的号码,没错。 myWebsite.com 是一个网站示例,我想从中获取 JSON 数据。
那么,如何将 $scope.apiKey 传递给服务而不返回未定义的值?
当你得到AuthenticationService.getData()
的响应时你需要调用DrawService.getData
方法,这只是意味着当你有apiKey
AuthenticationService.getData()
.then(function(result) {
$scope.apiKey = result;
console.log($scope.apiKey);
DrawService.getData($scope.apiKey)
.then(function(result) {
$scope.numbers = result.data;
console.log($scope.numbers);
});
});
所以要明确一点,您 可以 将 $scope 变量传递给服务 - 这里的问题是您试图在 APIkey 被访问之前访问 $scope.apiKey从身份验证服务返回给您。为确保数据在使用前得到解析,只需在 AuthenticationService 的 .then()
中调用 DrawService。