2017-03-13 7 views
0

Spotify API를 개인 학습으로 시작하여 초보자 가이드로 시작했습니다.Handlebars.js는 동적 템플릿을 허용합니까?

주어진 예제 코드는 템플릿에 handlebars.js를 사용하고 있으며 실제로는 매우 멋지다고 생각합니다. 어떻게하면 내가 성취하고자하는 일을 할 수있는 방법을 찾아 낼 수 없는지.

이 내 템플릿

<script id="recently-played-template" type="text/x-handlebars-template"> 

    <div class=""> 
     <dl class="dl-horizontal"> 
     <h3> Recently Played </h3> 

    <p>{{items.0.track.artists.0.name}} - {{items.0.track.name}}</p> 

     </dl> 
    </div> 
    </div> 
</script> 

나는 스포티 파이 API에 대한 다음 호출을 수행하고있다. 성공하면 그 다음

 $.ajax({ 
      url: 'https://api.spotify.com/v1/me/player/recently-played', 
      headers: { 
       'Authorization': 'Bearer ' + access_token 
      }, 
      success: function(response) { 
       recentlyPlayedPlaceholder.innerHTML = recentlyPlayedTemplate(response); 


       $('#login').hide(); 
       $('#loggedin').show(); 
      } 
     }); 

그래서 제가하는 방법을 알아 내려고 노력하고 있어요 것은 내 템플릿을 구축하는 사용자에게 데이터를 표시하는 자리 표시 자 DIV에 넣어 가도록 JSON 응답 데이터와 템플릿을 채울 것입니다 얼마나 많은 트랙이 반환되는지를 기반으로합니다.

사용자가 1 주일 동안 spotify를 사용한 다음 3 곡을 청취한다고 가정 해 보겠습니다. 3 곡을 표시하고 싶습니다.

그들이 들으면 10 명이 표시됩니다.

동적 템플릿을 만드는 방법을 모르겠습니다.

올바른 방향으로 밀어 넣기 만하면됩니다. 어떤 도움도 감사드립니다.

+0

아무것도 당신이 _single_ 템플릿 확장에서이 작업을 수행 할 필요가 말한다 - 어쩌면 당신은, 각 트랙에 대한 트랙 별 템플릿을 확장 사람들을 연결하고 전체 DIV 내용에 대한 템플릿에 결과를 넣어야 할? – barny

답변

1

코드가 오류없이 작동한다고 가정합니다. <p>{{items.0.track.artists.0.name}} - {{items.0.track.name}}</p>을 삭제하고 아래 코드를 시도하십시오.

{{#each items}} 
    <li>{{track.name}}</li> 
    {{/each}} 
+0

은 완벽하게 작동합니다. 그게 어떻게 작동하는지 말해 줄 수 있어요? 그게 handlebars.js에 특정한 것입니까? – TonyO

+0

나는 이제 이해할 것 같아. JSON 응답에서 '항목'의 양을 실행하는 각 루프에 대한 것입니다. 구문을 이해하지 못했습니다. 나는 전에 각각과 각을 보지 못했다. – TonyO

+0

네, 맞습니다. 그것은 핸들 바 특유의 것입니다. 그것은 각 루프마다 작동합니다. 자세한 내용은 [Handlebars Built-in Helpers] 링크 (http://handlebarsjs.com/builtin_helpers.html)를 참조하십시오. –