2016-03-21 13 views
0

olan döngülerdeki vaatleri kullanma Döngüden tekrarlanan verilerle sorun yaşıyorum (bu doğru değil, veriler benzersiz olmalıdır). Sorunun zayıf bir uygulama/vaatlerin anlaşılmasından kaynaklandığını düşünüyorum.Açılı

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, tekrarlanan post.title verileriyle doldurulur. Herhangi bir yardım büyük takdir edilecektir. Programlamada yeniyim, sorunlarım basit görünüyorsa özür dilerim.

+0

Yani '$ q.defer() ile;' Orada mantıklı değil. "Var p = gf.get (…) .then (…)' – Bergi

+0

ile başlayalım. Ayrıca, eğer "mesajlar" bir dizi ise, [dizilerdeki 'in' in 'in 'dizisini kullanmanın niçin kötü olduğunu Fikir] (https://stackoverflow.com/q/500504/1048572). Bunun yerine, diğer sorununuzu çözen ['markers = posts.map (…)'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) kullanın. . – Bergi

cevap

0

deneyin yerine:

var p = $q.defer(); 
p = gf.get(key).then(function(location) { 
    ... 
}) 

p = gf.get(key);

+0

'.then bir söz verir, bu yüzden' p' bir vaattir. – jib

+0

@jib, 'p' bir söz değil. p.promise' bir sözdür ve '' '' hiçbir şey döndürmez. https://docs.angularjs.org/api/ng/service/$q adresine bakın. – olysachok

+0

'.Bir söz vermek, söz zincirini nasıl oluşturduğumuzdur. – jib

İlgili konular