Javascript 通过对象数组的角度循环
我有以下功能,可以在Javascript 通过对象数组的角度循环,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有以下功能,可以在模型中创建一个对象数组,但是当我使用模型进一步深入应用程序时,我无法循环它的内容以提取数据 到目前为止,我尝试过的每个循环方法都包含一个console.log()。如果我创建一个承诺并在处理完models.devices后打印出其值,则返回一个空数组 有什么想法吗 var d = devices.split(','), count = 0, models = {devices:[]}; angular.forEach(d, function (device,
模型
中创建一个对象数组,但是当我使用模型
进一步深入应用程序时,我无法循环它的内容以提取数据
到目前为止,我尝试过的每个循环方法都包含一个console.log()。如果我创建一个承诺并在处理完models.devices
后打印出其值,则返回一个空数组
有什么想法吗
var d = devices.split(','),
count = 0,
models = {devices:[]};
angular.forEach(d, function (device, i) {
var index = i;
if (index <= 1) {
var deviceName = device.replace(/ /g,"+").toLowerCase(),
req = '?__url_path_param=' + deviceName;
$http
.get('/api/cheapest_by_name' + req)
.success(function (obj) {
models.devices.push(obj.device);
count++;
});
}
});
$q.all(models).then(function (data) {
apiDeal.multi(data, 3, 2);
});
然后我需要在apiDeal.multi
中循环查看设备。您需要遵守一系列承诺,这些承诺将取代您正在使用的$q.all
模型。这必须是一系列的承诺
因此,请将代码更改为:
var d = devices.split(','),
count = 0,
models = {devices:[]},
promises = [];
var promise = $http
.get('/api/cheapest_by_name' + req)
.success(function (obj) {
models.devices.push(obj.device);
count++;
});
promises.push(promise);
然后,做:
$q.all(promises).then(function (data) {
apiDeal.multi(data, 3, 2);
});
您如何等待HTTP请求完成?我看到您正在放弃$http返回的允许您这样做的承诺。不太确定什么对您不起作用。模型是未定义的还是什么?无法循环浏览其内容是什么意思?@OmriAharonmodels.devices
为空或undefined@MattiVirkkunen$http.success…
因此,您似乎希望模型
成为一个全局变量(也值得一看,为什么,也许您应该将其放在服务中)。尝试在不使用var
的情况下定义它,您可能会遇到范围问题。仅凭上面的代码很难判断。请注意,$q.all()
将把所有承诺结果的数组传递到函数的数据参数中,然后。在这种情况下,如果可能的话,最好只做apiDeal.multi(models.devices,3,2)
,否则在将数据传递给apiDeal.multi()
@JcT之前,必须对数据进行排序。我猜现在OP正在获取他的数据,他将更改一些代码:)
$q.all(promises).then(function (data) {
apiDeal.multi(data, 3, 2);
});