Angularjs - 我得到data.data,但不能为其分配范围变量

时间:2017-08-17 14:22:47

标签: javascript angularjs amazon-web-services http

我正在开发一个基于AngularJS的站点,该站点从Amazon Web Services表中获取问题和多项选择答案,以便动态构建prelab问题页面。 http get工作正常 - 当我放置断点并评估 data.data 的值时,它会提供我正在寻找的所有数据。

但是,在将其分配给 $ scope.allQuestions 后,所述变量将在控制台中评估为 undefined $ scope.allAnswers 也是如此。在另一个页面上,我使用相同的代码来获取缩略图/模拟URL而没有问题。

$ location 工作正常,我会在 ng-repeat 事件中注入 $ filter 进行过滤。

我在AWS上使用API​​网关来调用它。我启用了CORS,并且我在这里使用了相同的设置,我在其他功能中使用了这两个函数。

代码如下。提前谢谢!



app.service('preLabService', function($http) {
  this.getQuestions = function() {
    return $http.get('api-gateway-url');
  };
  this.getAnswers = function() {
    return $http.get('api-gateway-url');
  };
});

app.controller('PreLabQuestionsCtrl', ['$scope', '$location', '$filter', 'preLabService', function($scope, $location, $filter, preLabService) {
  init();

  function init() {
    preLabService.getQuestions().then(function(data) {
      $scope.allQuestions = data.data;
    });
    preLabService.getAnswers().then(function(data) {
      $scope.allAnswers = data.data;
    });
    $scope.simURL = $location.search().simURL;
    $scope.simID = $location.search().SimID;
  }
}]);




在我实际在浏览器中运行的代码中,我确实替换了*' api-gateway-url'与他们各自的网址 - 我只是不想在这里给出API网址。

3 个答案:

答案 0 :(得分:0)

您真的需要将thi添加到$ scope变量吗?

你可以尝试:

const vm = this

然后将数据值分配给vm.allQuestions和vm.allAnswers?

答案 1 :(得分:0)

正如我的评论所述,您可以在$scope.$apply()变量data.data之后致电$scope.$allQuestions

推荐的方法是将回调包装在$scope.$apply()中,以指示Angular运行另一个摘要周期。这可以在你的回调函数中完成:

preLabService.getQuestions().then(function(data) {
    $scope.$apply(function () {
        $scope.allQuestions = data.data;
    });
});

答案 2 :(得分:0)

好的,我发现我是个白痴。

我将data.data存储在$ scope.allAnswers中,但是在ng-repeat属性中,我试图重复$ scope.answers。我已修复它并且工作正常。

结束不需要使用apply或设置const vm值 - 我只是犯了一个愚蠢的错误。

感谢您的回答,无论如何!