Невозможно создать представление плейлиста приложения Spotify - PullRequest
0 голосов
/ 20 марта 2012

Я пытаюсь отобразить простое представление плейлиста в моем приложении 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);

Это приведет к пустому представлению списка и ошибке, обнаруженной в sp: //import/scripts/language.js: 44 : "Uncaught TypeError: Невозможно прочитать свойство 'length' из неопределенный "

Есть предложения?

Ответы [ 3 ]

1 голос
/ 21 марта 2012

Я бы сказал, что вы получаете эту ошибку, потому что список воспроизведения еще не загружен, когда вы делаете 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 голосов
/ 20 августа 2013

Для API 1.0:

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(...))

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

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

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

0 голосов
/ 21 марта 2012

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

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

вместо

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

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

...