我正在开发一个基于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网址。
答案 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值 - 我只是犯了一个愚蠢的错误。
感谢您的回答,无论如何!