2017-03-13 12 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> 

私はSpotifyはAPIへの次の呼び出しをしています。成功した場合には、SO私は何をどのように把握しようとしていますが、私のテンプレートを構築することで、ユーザ

 $.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週間以内にスポットライトを使用せず、その後3曲を聴いているとします。 3曲が表示されます。

聞いたら10回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レスポンスの 'items'の量だけ実行する各ループのためのものです。私は構文をよく理解していません。私は前に各と/それぞれを見たことがありません。 – TonyO

+0

はい、そうです。それはハンドルバーに特有のものです。それは各ループのように機能します。詳細は、このリンク[Handlebars組み込みヘルパー](http://handlebarsjs.com/builtin_helpers.html)を参照してください。 –

関連する問題