簡體   English   中英

Spotify應用程式的播放清單

[英]Spotify App List of Playlists

我正在嘗試在本地Spotify列表中顯示當前用戶播放列表的列表。

我有這個來獲取用戶播放列表:

require([
  '$api/models',
  '$views/list#List',
  '$api/library#Library'
], function(models, List, Library) {
  'use strict';

  var UsersLibrary = Library.forCurrentUser();


  var test = function() 
  {
    console.log(UsersLibrary.playlists);
    var playlists = UsersLibrary.playlists.snapshot().done(function(s){

      var length = s.length;

      for(var x = 0; x < length; x++)
      {
        var meta = s._meta[x];
        if(!meta.name) continue ; // skip folders
      }

    });    
  };

  exports.test = test;
});

而且我可以循環播放列表沒有問題。 當我嘗試使用Spotify List對象並創建列表時,問題開始了。 我嘗試了這個(以及一些具有相同結果的變體):

var test = function() 
  {
    console.log(UsersLibrary.playlists);
    var playlists = UsersLibrary.playlists.snapshot().done(function(s){

      var list = List.forCollection(s._collection, {"layout":'table'});
    });    
  };

調用.forCollection時,我立即收到Uncaught TypeError: Cannot call method 'indexOf' of null

經過一段時間的調試,我發現當Spotify API腳本之一嘗試訪問未定義集合中的uri字段時,問題就來了。

還有其他方法可以解決這個問題嗎? 我當時想為用戶的播放列表提供一個uri,但我找不到任何東西。

謝謝,

-肯

該集合包含一組播放列表。 您可以調用loadAll函數來加載所有它們:

require([
  '$api/models',
  '$views/list#List',
  '$api/library#Library'
], function(models, List, Library) {
  'use strict';

  var UsersLibrary = Library.forCurrentUser();

  var test = function() {
    UsersLibrary.playlists.snapshot().done(function(s){
      s.loadAll().done(function(playlists){
        // playlists is an array of Playlist objects
      });
    });
  };

  exports.test = test;
});

如果你想創建一個List特定的播放列表,你會怎么做:

var playlist = playlist[0]; // we pick, for example, the first one
playlists.load('tracks').done(function(p) {
  var list = List.forCollection(p.tracks, {"layout":'table'});
  document.body.appendChild(list.node);
  list.init();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM