У меня есть следующая функция, которая создает массив объектов внутри models
, однако, когда я прихожу к использованию models
дальше в приложении, я не могу пройти через его содержимое, чтобы вытаскивать данные.Угловая петля через массив объектов
Каждого метод петли я пытался до сих пор, содержащими один console.log()
сообщения просто выводит сообщение разы сообщения, когда models
будет содержать два объектов, так что я думаю, что проблема на самом деле лежит создание models
. Если я создам обещание и распечатаю значение 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);
});
... Тогда (в апи-deal.factory.js)
function apiDeal($http, $rootScope) {
return {
multi: function (devices, limit, type) {
console.log(devices); // equal to below image
console.log(devices.devices); // equal to '[]'
}
}
}
Я тогда нужно перебрать devices
в apiDeal.multi
Как вы ждете ваших HTTP запросов, чтобы закончить? Я вижу, что вы отказываетесь от обещаний, возвращаемых $ http, которые позволят вам это сделать. –
Не совсем уверен, что не работает для вас. Является ли модель неопределенной или чем-то еще? Что означает * неспособность перебирать содержимое своего содержимого *? –
@OmriAharon 'models.devices' пуст или не определен – leaksterrr