2012-03-20 2 views
0

Я пытаюсь отобразить простой вид списка воспроизведения в моем приложении Spotify со следующим кодом:Невозможно создать Spotify вид плейлиста приложения

sp = getSpotifyApi(1); 
var m = sp.require("sp://import/scripts/api/models"); 
var v = sp.require("sp://import/scripts/api/views"); 
var jq = sp.require('sp://XXX/jquery/jquery-1.7.1.min'); 

var pl = m.Playlist.fromURI('spotify:user:d3marcus:playlist:4zPZzImEYkUOVBvxIo42im'); 
var player = new v.Player(); 
player.track = pl.get(0); 
player.context = pl; 
var list = new v.List(pl); 
$('XXX').append(list.node); 

Это приведет к пустой списке и ошибку попавшей в зр: //import/scripts/language.js: 44: "Uncaught TypeError: не удается прочитать свойство 'длина' неопределенных"

Любые предложения?

+1

Кажется, это связано с набором символов файла манифеста. Если я сохраню как utf-8, он будет работать, иначе нет. –

ответ

1

Я бы сказал, что вы получаете эту ошибку, потому что плейлист еще не загружен, когда вы делаете pl.get(0). Для того, чтобы убедиться, что модель плейлист загрузится вы можете либо сделать

pl = m.Playlist.fromURI('spotify:user:d3marcus:playlist:4zPZzImEYkUOVBvxIo42im'); 
pl.observe(models.EVENT.LOAD, function() { 
    player.track = pl.get(0); 
    ... 
}); 

или

m.Playlist.fromURI("spotify:user:d3marcus:playlist:4zPZzImEYkUOVBvxIo42im", function(pl) { 
    player.track = pl.get(0); 
    ... 
}); 
0

я не уверен, но вы могли бы попробовать это:

$('YYY').append($(player.node)); 
$('XXX').append($(list.node)); 

вместо

$('XXX').append(list.node); 

дайте нам знать ...

0

Для 1.0 API:

require([ 
    '$api/models', 
    '$views/list#List' 
], function (models,List) { 

var addList = function(list) { 
    list.load('tracks').done(function(list) { 
     list.tracks.snapshot().done(function(trackSnapshot){ 

      // Make the playlist view 
      var multiple_tracks_player = document.getElementById('addedTracksList'); 
      var playableList = List.forPlaylist(list); 
      multiple_tracks_player.appendChild(playableList.node); 
      playableList.init(); 

     }); 
    }); 
} 

exports.addList = addList; 
} 

// Example of use: 
addList(models.Playlist.fromURI(...)) 

Я проверил его, используемое выше, поэтому он должен работать.

Я нашел это в tutorial-app available on github под «Воспроизведение музыки» -сече- -> «Play список дорожек»

Я надеюсь, что это полезно.