现在,我正在在线 json 数据源上使用 $http.get。在我的 Controller 中:
$http.get('source').success(function(data) {
$scope.nextPageToken = data.nextPageToken;
$scope.prevPageToken = data.prevPageToken;
});
获取变量 $scope.nextPageToken 工作正常。我用于显示它的 HTML 代码(用于测试)
<p>{{nextPageToken}}</p>
有效并在浏览器中正确显示。 但是当我尝试在 Controller 中使用变量 $scope.nextPageToken
$http.get('source').success(function(data) {
$scope.nextPageToken = data.nextPageToken;
$scope.prevPageToken = data.prevPageToken;
});
$http.get('source&pageToken=' + $scope.nextPageToken).success(function(data) {
$scope.picture = data.thumbnail.url;
});
控制台中的console返回一个错误的请求(400)。它似乎试图到达链接“source&pageToken=undefined”,这意味着 $scope.nextPageToken 没有被评估或没有被传递给 $http.get 参数。
这很奇怪,因为当我定义一个字符串变量并将其连接到 $http.get 参数的 URL 时,URL 是正确的。例如,当我尝试时它有效
this.key = 'someKey';
$http.get('source&key=' + this.key).success(function(data) {
$scope.nextPageToken = data.nextPageToken;
$scope.prevPageToken = data.prevPageToken;
});
这可能是因为我试图访问一个只能在 $http.get 函数 block 内访问的变量吗?如果是这样,我如何访问 block 外的 $scope.nextPageToken 变量?
感谢任何帮助。谢谢!
编辑(在 basilikum 的回答之后):我也试过
this.someKey = 'stringKey';
$http.get('source&key=' + this.someKey).success(function(data) {
$scope.nextPageToken = data.nextPageToken;
$scope.prevPageToken = data.prevPageToken;
$http.get('source&pageToken=' + $scope.nextPageToken + '&key' + this.someKey).success(function(data) {
$scope.picture = data.thumbnail.url;
});
});
(这是我拥有的实际代码的更具体示例) 但是,当我这样做时,我得到的错误是
TypeError: Cannot read property 'someKey' of undefined
我已经在另一个中尝试了嵌套的 $http.get,但我完全得到了另一个错误,所以我认为它只是在制造更多问题。谁能告诉我这是怎么回事?
最佳答案
您正在处理异步代码。当您发送第二个请求时,第一个请求尚未完成,因此 nextPageToken
和 prevPageToken
尚未设置。一个简单的解决方案是将第二个请求放在第一个请求的成功函数中:
$http.get('source').success(function(data) {
$scope.nextPageToken = data.nextPageToken;
$scope.prevPageToken = data.prevPageToken;
$http.get('source&pageToken=' + $scope.nextPageToken).success(function(data) {
$scope.picture = data.thumbnail.url;
});
});
关于javascript - Angular JS : Accessing a $scope. 变量在 $http.get block 内定义以在另一个 $http.get 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23416908/