javascript - Angular JS : Accessing a $scope. 变量在 $http.get block 内定义以在另一个 $http.get 中使用

标签 javascript angularjs http scope undefined

现在,我正在在线 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,但我完全得到了另一个错误,所以我认为它只是在制造更多问题。谁能告诉我这是怎么回事?

最佳答案

您正在处理异步代码。当您发送第二个请求时,第一个请求尚未完成,因此 nextPageTokenprevPageToken 尚未设置。一个简单的解决方案是将第二个请求放在第一个请求的成功函数中:

$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/

相关文章:

javascript - 保存字体文件以供离线查看

javascript - 使用新的 facebook javascript sdk 检查扩展权限

c++ - 在现有 MFC 应用程序中使用什么 API 来添加 HTTP 客户端支持?

c++ - 重用 Asio 连接

php - http.so 已加载但 http_get 未定义

javascript - 使用 javascript api 将自定义功能添加到手写笔

javascript - TypeScript - 将一个对象的所有属性分配给另一个对象的简写方式

spring-mvc - 使用 AngularJS 配置 Spring MVC

html - 当匹配 ng-if 时停止 ng-repeat

php - 使用 Rest POST 将数据从 angularjs 表单发送到 symfony2