Ich habe Probleme mit der Wiederholung von Daten aus einer Schleife (die nicht genau ist, sollten die Daten eindeutig sein). Ich glaube, dass das Problem auf eine schlechte Umsetzung/Verständnis von Versprechen zurückzuführen ist.Verwenden von Versprechen in Schleifen mit Winkel
var posts = PostsData.getPosts();
$scope.$watch($scope.active, function() {
$timeout(function() {
var markers = [];
for (var key in posts) {
var post = posts[key];
if (posts.hasOwnProperty(key) && posts[key]!=null) {
var p = $q.defer();
p = gf.get(key).then(function(location) {
console.log(post.title)
return ({
idKey: key,
title: post.title,
coords: {
latitude: location[0],
longitude: location[1]
}
});
});
markers.push(p);
}
}
$q.all(markers).then(function(markers) {
$scope.markers = markers;
});
});
})
}
$ scope.markers ist mit wiederholten post.title Daten gefüllt. Jede Hilfe würde sehr geschätzt werden. Ich bin neu im Programmieren, also entschuldige ich mich, wenn meine Probleme einfach erscheinen.
Des '$ q.defer();' macht keinen Sinn, es machen. Sie sollten nur initialisieren mit 'var p = gf.get (...) .then (...)' – Bergi
Wenn auch 'posts 'ein Array ist, sehen Sie sich [warum die Verwendung von' for ... in' auf Arrays ist so schlimm Idee] (https://stackoverflow.com/q/500504/1048572). Verwenden Sie stattdessen ['markers = posts.map (...)'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map), was auch Ihr anderes Problem löst . – Bergi