Я использую API spotify для создания дампов всех плейлистов пользователя и содержащихся в них названий треков. Я выяснил, как запросить эту информацию, и пытаюсь сохранить ее в хэше, где можно найти массив дорожек по имени списка воспроизведения (hash[playlistName] = [track1, track2, etc]
). Когда я console.log это все выглядит хорошо. ![enter image description here](https://i.stack.imgur.com/JVARG.png)
Но когда я пытаюсь использовать хелпер ручек баров, чтобы перебрать все это и отобразить все, JavaScript думает, что объект пуст. Вот некоторый код:
//helper that will display eventually, but right now logs "undefined"
Handlebars.registerHelper('read_hash', function(hash){
console.log(hash.length); //undefined
console.log(Object.keys(hash); //undefined
console.log(hash); //looks fine.. results in screenshot..
});
//ajax request that successfully get's all of the playlist data I want
$.ajax({
url: 'https://api.spotify.com/v1/me/playlists',
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(response) {
//make a new hash and put in template
var processed = 0;
response.items.forEach(function(e){
var playlistName = e.name;
//get tracks by nesting a request lol
$.ajax({
url: e.tracks.href,
headers: {
'Authorization': 'Bearer ' + access_token
},
success: function(responseTwo) { //returns track objects
playlists[playlistName] = responseTwo.items;
processed++;
}
}).done(function(){
if(processed >= response.items.length)
{
playlistPlaceholder.innerHTML = playlistTemplate({Playlists: playlists}); //get playlists
}
});
});
//handle bars template with call to read_hash
<script id="playlist-template" type="text/x-handlebars-template">
<h1>playlists</h1>
<table>
<tr>
<th>playlist</th>
<th>tracks</th>
</tr>
{{read_hash Playlists}}
</table>
</script>
Кроме того, когда я консольный журнал JSON.stringify (хэш) из read_hash я получаю результаты, которые я хочу так ... может быть, что-то работает?