gpt4 book ai didi

javascript - 来自 AngularJS 的 $success 回调函数

转载 作者:行者123 更新时间:2023-11-30 06:28:03 26 4
gpt4 key购买 nike

我正在调用 Controller 以获取 API 值。如何在 $http 方法之外传递数组?

我需要将数组 pa[] 传递给 $scope.myData = pa;

首先,console.log(pa) 打印值 [10,20,30,40]。

其次,console.log(pa) 清空数组[]。

JavaScript

function Ctrl($scope, $http) {
var url = "https://spreadsheets.google.com/feeds/list/0AsXjbsnPIu06dGswZUV4WX/values?alt=json-in-script&callback=angular.callbacks._0";
var pa = [];
$http({
method: 'JSONP',
url: url
}).success(function (data) {

for (i = 0; i < data.feed.entry.length; i++) {
var entry = data.feed.entry[i];
pa.push(entry.gsx$productivity.$t);
console.log(pa); //[10,20,30,40,50]
}
});

console.log(pa) // [] empty array

$scope.myData = pa;
}

如何在 $success 回调函数之外获取数组?

最佳答案

这段代码是异步的。在 $http 服务有机会从您的 API 调用中获取值之前,pa 已分配给 $scope.myData

您需要使用 $q服务 promise 库来控制您的代码流。像这样:

function Ctrl($scope, $http, $q) {
var url = "https://spreadsheets.google.com/feeds/list/0AsXjbsnPIu06dGswZUV4WX/values?alt=json-in-script&callback=angular.callbacks._0";
var pa = [];
var paPromise = $q.defer()

$http({
method: 'JSONP',
url: url
}).success(function(data) {

for (i = 0; i < data.feed.entry.length; i++) {
var entry = data.feed.entry[i];
pa.push(entry.gsx$productivity.$t);
console.log(pa); //[10,20,30,40,50]
}
paPromise.resolve(pa)
});

$scope.myData = paPromise.promise;
}

在这里,我们注入(inject)了 $q 服务并使用它实例化了一个变量 paPromise。接下来,我们将此 promise 提供给 $scope.myData。一旦 promise 在 $http 成功方法中得到解决,AngularJS 将通知您的 $scope 并更新值,它会反射(reflect)在您的模板/DOM 上。

关于javascript - 来自 AngularJS 的 $success 回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811655/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com