2014-10-28 81 views
0

使用Spotify搜索音樂曲目的快速項目...將曲目名稱添加到文本區域,並生成與藝術家匹配的曲目ID列表姓名和專輯名稱+藝術作品...下面是我到目前爲止正在處理的代碼的示例...卡住獲取專輯名稱/專輯圖像和藝術家姓名...使用Spotify API搜索曲目使用Spotify API添加專輯名稱和藝術家姓名

示例 - 我正在使用是: 追蹤:所有我的 結果應該是藝術家:約翰傳奇 軌道ID是正確的:3U4isOIWM3VvDubwSI3y7a

顯示爲第一個....

http://jsfiddle.net/61f64ccq/2/

而且(更新該位......)

http://jsfiddle.net/UT7bQ/212/ {{名}} - {{this.artists.name}} 試圖爲Handlebar.js用於添加代碼從以.json數據獲取藝術家名稱...

下面的第一個例子....

使用純JS/Handlebar.js和HTML5 ....任何幫助將是巨大的...嘗試{{artists.name}}但沒有發生任何事情...的JavaScript代碼

<div class="container"> 
<h1>Search for a Track - Spotify</h1> 
<form id="search-form"> 
<input type="text" id="query" value="" class="form-control" /> 
<input type="submit" id="search" class="btn btn-primary" value="Search" /> 
</form> 
<div id="results"></div> 
</div> 
<script id="results-template" type="text/x-handlebars-template"> 
{{#each tracks.items}} 
<div >{{id}} -   
<br /> {{name}} <br/></div> 
// Issue - Image 
<div style="border:1px solid red; background-image:url({{images.2.url}})" data-album-id="{{id}}" class="cover"></div> 
// Issue - Artist Name and Album Name 
<div style="border:1px solid green; "> Artist name = { } - Album name = { } </div> 

部分 -

<script> 
var templateSource = document.getElementById('results-template').innerHTML, 
template = Handlebars.compile(templateSource), 
resultsPlaceholder = document.getElementById('results'), 
playingCssClass = 'playing', 
audioObject = null; 
var fetchTracks = function (albumId, callback) { 
$.ajax({ 
url: 'https://api.spotify.com/v1/albums/' + albumId, 
success: function (response) { 
callback(response); 
} 
}); 
}; 
var searchAlbums = function (query) { 
$.ajax({ 
url: 'https://api.spotify.com/v1/search', 
data: { 
q: query, 
type: 'track' 
// Gets the track - search query 
}, 
success: function (response) { 
resultsPlaceholder.innerHTML = template(response); 
} 
}); 
}; 
// This was for playing the Track in your window... Not working in the Track format... 
results.addEventListener('click', function (e) { 
var target = e.target; 
if (target !== null && target.classList.contains('cover')) { 
if (target.classList.contains(playingCssClass)) { 
audioObject.pause(); 
} else { 
if (audioObject) { 
audioObject.pause(); 
} 
fetchTracks(target.getAttribute('data-album-id'), function (data) { 
audioObject = new Audio(data.tracks.items[0].preview_url); 
audioObject.play(); 
target.classList.add(playingCssClass); 
audioObject.addEventListener('ended', function() { 
target.classList.remove(playingCssClass); 
}); 
audioObject.addEventListener('pause', function() { 
target.classList.remove(playingCssClass); 
}); 
}); 
} 
} 
}); 
document.getElementById('search-form').addEventListener('submit', function (e) { 
e.preventDefault(); 
searchAlbums(document.getElementById('query').value); 
}, false); 
</script> 

感謝 西蒙

回答

0

下面是我改變,並添加了小提琴的例子 - 在把手湊了專輯信息與示例正確的格式 - 圖像/藝術家,相冊類型和相冊名稱....希望對其他人有用....

http://jsfiddle.net/61f64ccq/4/

<script id="results-template" type="text/x-handlebars-template"> 
{{#each tracks.items}} 
<div >{{id}} -   
<br /> {{name}} <br/></div> 
<div style="border:1px solid red; background-image:url({{album.images.2.url}})" data-album-id="{{id}}" class="cover"></div> 
<div style="border:1px solid green; "> Artist name = {{artists.0.name}} </div> 
<div style="border:1px solid green; "> Album Type = {{album.album_type}} </div> 
<div style="border:1px solid green; "> Album name = {{album.name}} </div> 
{{/each}} 
</script> 

感謝大家在看這個 - 已得到修復...乾杯西蒙

相關問題