javascript - Spotify 清除播放列表拖放

标签 javascript api spotify spotify-app

当您将艺术家拖放到我的应用程序的边栏中时,我会构建一个临时播放列表。每次我将一个新艺术家拖到我的应用程序中时,它都会在前一个列表之后构建一个新列表,而不会清除旧列表。 (请注意,此处缺少一些可能不需要的代码)。

我的问题:每次我将艺术家拖/放到我的应用程序中时,如何清除或删除当前构建的播放列表然后构建一个新播放列表?我怀疑它需要在 getRelated() 中调用吗?

 models.application.addEventListener('dropped', sidebarDropEventListener);

 function sidebarDropEventListener() {
   for(var i = 0; i < models.application.dropped.length; i++){
      var draggedItem = models.application.dropped[i];
      updateFromDragged(draggedItem.uri);
   }
 }

 function updateFromDragged(droppedUri) {
   // If dropped item is an artist
   if(droppedUri.indexOf('artist') >= 0) {
      getRelated(droppedUri);
   } else {
      console.warn('Dropped item is not an artist');
   }
}

     // Build playlist
     function buildList(trackURIArray){
       var arr = trackURIArray;

       models.Playlist
        .createTemporary("myTempList_" + new Date().getTime())
        .done(function (playlist){ 

        playlist.load("tracks").done(function() {

          playlist.tracks.add.apply(playlist.tracks, arr).done(function(){
            // Create list
            var list = List.forCollection(playlist);

            // Populate DOM
            $('#playlistContainer').append(list.node);
            list.init();
          });
      });
    });
  }

    // Get Related
    function getRelated(artist_uri){

      models.Artist
      .fromURI(artist_uri)
      .load('related','name')
      .done(function (artist){

        artist.related.snapshot().done(function (snapshot){
          snapshot.loadAll().done(function (artists){

            var promises = [];

            for(var i = 0; i < artists.length; i++){
              var promise = getTopTrack(artists[i], 1);
              promises.push(promise);
            }

            models.Promise.join(promises)
              .done(function (tracks){
                buildList(tracks);
              })
              .fail(function (tracks){
                buildList(tracks);
              });
          });
        });
      });
    }

最佳答案

我认为您可以将当前播放列表存储到本地存储,然后在 drop 函数中删除它。在 buildList 中是这样的:

localStorage.current_temp_playlist = playlist.uri;

然后在 updateFromDragged 中:

models.Playlist.removeTemporary(models.Playlist.fromURI(localStorage.current_temp_playlist));

您可以单独将播放列表存储在 updateFromDragged 可以访问的地方。

关于javascript - Spotify 清除播放列表拖放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19898092/

相关文章:

javascript - 从javascript中的url获取查询字符串

java - 下游服务健康检查

api - Steam API 2020

c# - OnActionExecuted 获取状态码

ios - Spotify:使用不接受重定向 URL 的 Web API 登录

ios - 从 Spotify iOS SDK 获取 userId

ios - 如何使用 Spotify Web API 获取当前播放/最近播放的歌曲

javascript - 使用ajax设置和调用全局变量

javascript - Backbone : Reference events to parent object

Javascript:字符串替换问题