2016-03-29 10 views
1

Burada biraz yeniyim ve küçük bir proje projesi için Angular'a geri dönmeliyim.Musicbrainz GET sanatçıları ile Angular with ng-repeat | JSON

MusicBrainz (müzik sanatçıları için meta veriler) tarafından sağlanan bir JSON nesnesinde yazılmış bir sanatçı listesi almak zorundayım.

ben "muse" etiketine sahip bir araştırmanın sonucu olan bir JSON nesnesi döndürür

http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json 

aşağıdaki linke ile örneğin bir istek yaptık. Ama bu "sanatçı" isimlerini html'mde basmak istiyorum.

AngularJS kullanıyorum.

benim app.js kod bu küçük bloğunu yaptık:

<ul> 
    <li ng-repeat="name in listenoms"> 
     {{data['artist-list'].artist[0].area}} 
    </li> 
</ul> 

Hiçbir şey çalışıyor:

.controller('artisteCtrl', function($http, $scope){ 
    $scope.listenoms = []; 

    $http.get('http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json') 
     .success(function(data){ 
      $scope.listenoms = data; 
      console.log($scope.listenoms); 
    }) 
}) 

Sonra HTML ng-tekrar benziyor. Nesneyi alır ve konsolda gösterir, ancak çocuklara erişemiyorum ...

Yardımlarınız için teşekkürler!

+0

yanıt olarak işaretlenebilir ve oluşturmak Bunun yerine yeni bir soru, aksi takdirde çok geniş ve başkaları için gelecekteki kullanım için yararlı olmaz. –

+0

Sorunuzun yanıtını ve benim cevap tutmalı belirtilenden' name' değişkeni kullanarak değiliz

<ul> <li ng-repeat="artist in listenoms['artist-list'].artist"> {{artist.area}} </li> </ul> 

+0

@DavidL Ah tamam güzel! Tavsiyen için teşekkürler, burada tamamen yeniyim, tamam! –

cevap

1

$ http yanıtı aşağıdaki özelliklerin oluşan bir veri nesnesi değil, bir tepki nesne (documentation bakınız) şöyledir:

data – {string|Object} – The response body transformed with the transform functions. 
status – {number} – HTTP status code of the response. 
headers – {function([headerName])} – Header getter function. 
config – {Object} – The configuration object that was used to generate the request. 
statusText – {string} – HTTP status text of the response. 

Basitçe kapsam özelliğine response.data nesneyi atayın:

$scope.listenoms = data.data; 

veya veri adlandırmak "yanıtı" artık önerilmemektedir kabul edilir .then() kullanmak yerine .success() beri .success(), daha iyi bir takip etmekte:

$http.get('http://search.musicbrainz.org/ws/2/artist/?query=muse%20e*&fmt=json') 
    .then(function(response){ 
     $scope.listenoms = response.data; 
     console.log($scope.listenoms); 
    } 
) 

Son olarak, şablonunuzdaki yük nesnesinden yanlış nesne yapısını kullanıyorsunuz. Aşağıdaki gibi görünmelidir:

Eğer `ng-repeat` blokta
+0

ayrıca '.sen()' yerine '.success()' –

+0

@ZackMacomber mükemmel noktasını kullanmalı, cevabımı güncelleyeceğim. –

+0

Tamam, cevaplarınız için teşekkürler arkadaşlar, app.js tarafında daha temiz, ancak görünen bölüm için, adında bir çizgi olan bir çocukla nasıl başa çıkabilirim? Gibi: "artist-list" –