У меня есть проект Angularjs, который использует Restangular для доступа к базе данных. У меня есть три уровня данных (например, mydata, mysubdata, mysubsubdata), и между каждым слоем существует соотношение «один ко многим». Моя проблема в том, что для моего отображения мне нужно объединить mysubsubdata в mysubdata. Когда я пытаюсь получить данные из базы данных, я получаю жалобу в компиляторе, который говорит, что я не могу иметь функцию в цикле. Вот что я пытаюсь сделать:Как использовать функцию внутри цикла внутри .then?
DataService.one(mydata.id).getList('mysubdata')
.then(function(data) {
var dataList = data;
for (returnedData in dataList) {
DataService.one(mydata.id).one('mysubdata',returnedData.id).getList('mysubsubdata')
.then(returnedSubData) {
dataList = angular.extend(dataList, returnedSubData);
});
}
});
Все примеры, которые я нашел бы петли внутри .then функции или пытаются получить кучу обещаний назад первый. Я не думаю, что они применяются. Я все еще довольно новичок в Angular, поэтому я могу немного подпрыгнуть. Не уверен также в продлении, но это, вероятно, отдельный вопрос.
Редактировать: Я подозреваю, что это должно быть сделано с помощью $ q.all, но еще не поняло метод.
С моей точки зрения, вам нужно вернуть 'обещание', чтобы использовать' then' – jdmdevdotnet
Чтобы уточнить, DataService использует Restangular и делает это. Первая часть (до второго DataService) работает нормально. Извините, что не объяснил это. –
Вы пытались сделать замыкание внутри цикла? –