现在,我正在使用一个在线json数据源上的$http.get。在我的控制器中:
$http.get('source').success(function(data) {
$scope.nextPageToken = data.nextPageToken;
$scope.prevPageToken = data.prevPageToken;
});
获取变量$scope.nextPagetOken工作正常。显示它的html代码(用于测试)
<p>{{nextPageToken}}</p>
正常工作,并在浏览器中正确显示。
但是当我试图在控制器中使用变量$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;
});
控制台中的控制台返回错误请求(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函数块中访问的变量吗?如果是,如何访问块外的$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
。一个简单的解决方案是将第二个请求放在第一个请求的success函数中:
$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;
});
});