일부 angularjs 항목을 시험 중입니다. 그래서 배열이 몇 개 있습니다. 그 중 하나가 아티스트입니다. 이것은 artists자바 스크립트 배열 요소가 정의되지 않았습니다.
문제는 내가 개별적으로 배열의 요소에 액세스 할 수 있다는 것입니다 console.log(artists);
에서 기본 구조입니다이다. 나는 연관 배열에 관한 많은 것을 읽었고 그래서에 관한 질문을 할 수도 있지만 아무도 정말로 도움이되지는 않습니다. 그래서 내가하는 바보 같은 실수이거나 다른 것입니다.
내가 가지고있는 모든 배열에 대해 얻은 결과는 거의 없습니다.
console.log(artists[0]); //returns undefined
console.log(artists['0']); //returns undefined
console.log(artists.length); // returns 0 in spite of the fact it showed 20 previously
console.log(Array.isArray(artists)); //returns true
그리고 네 나는 서비스에서이 같은 배열을 생성, ChartService
var artists = [];
var artistids = [];
var tracks = [];
$http.get('https://api.spotify.com/v1/search/?q=genre:pop&type=artist').success(function (data) {
var items = data.artists.items;
items.forEach(function(item){
artists.push(item.name);
artistids.push(item.id);
var query = trackApi+item.id+'/top-tracks?country=SE'
$http.get(query).success(function (response) {
tracks.push({'preview': response.tracks[0].preview_url});
});
});
});
return {
Artists : artists,
Tracks : tracks
}
그리고 내 컨트롤러
console.log(ChartService.Artists); //runs fine
console.log(ChartService.Tracks); //runs fine
$scope.tracks = ChartService.Tracks;
console.log($scope.tracks); //runs fine
console.log($scope.tracks[0]); //returns undefined
console.log($scope.tracks['0']); //returns undefined
console.log($scope.tracks.length); // returns 0 in spite of the fact it showed 20 previously
console.log(Array.isArray($scope.tracks)); //returns true
그래서 너를 혼란스럽게합니까? 배열이 비어있을 수있는 경우가 많습니다. http 요청이 실패하거나 항목을 반환 할 수 없습니다. –
콘솔에서 배열을 보여주는 첨부 된 이미지가 있습니다. 그것은 분명히 비어 있지 않습니다. –
이미지를 보았습니다. 그러나'console.log (artist)'바로 다음에'console.log (artists.length)'를 호출했다는 것이 확실하지 않은가? –