Я создаю музыкальное приложение, которое использует Knockout для привязки. Все треки, перечисленные в приложении, извлекаются извне из Soundcloud следующим образом:
$.getJSON('http://api.soundcloud.com/users/guy-j/tracks.json?client_id=c4bc3b1a93902abecbaca3fa4582d970', {limit: 200}, function(data) {
vm.tracks($.map(data, function (track) {
return {
artwork: track.artwork_url,
avatar: track.user.avatar_url,
date: track.created_at,
description: track.description,
duration: track.duration,
listens: track.playback_count,
permalink: track.permalink_url,
purhcase: track.purchase_url,
stream: track.stream_url,
track: track.title
};
}));
});
Эти треки (после получения) помещаются в пустой observableArray, а затем HTML-представление привязывается к этому массиву и генерирует список треков. У меня воспроизведение / пауза звука:
Чтобы выбрать / воспроизвести трек, каждый <li>
, созданный из observableArray, имеет обработчик кликов под названием 'goToTrack', который затем передает наблюдаемый объект с именем 'self.chosenTrackData' выбранной дорожки, и мой аудиоэлемент затем связывается с 'selectedTrackData' для воспроизведения выбранный трек.
Моя проблема сейчас заключается в том, что я не совсем уверен, каким будет лучший способ приблизиться к функциям следующей / предыдущей дорожки с помощью Knockout. Мне бы пришлось кое-как различать текущую точку в observableArray, а затем ++ или - в зависимости от того, какой вариант вы выбрали?
Любая помощь будет принята с благодарностью, так как я все еще изучаю Knockout!