Spotify:如何防止它记得听了1首以上的歌曲
Spotify: How to prevent it remembers listening more then 1 song?
我正在为Spotify申请。使用此应用程序,我有一个简单的"订阅"功能,它允许我从用户正在收听的当前曲目中添加专辑的播放列表。一切正常。不过我有这个错误。听了超过 1 首歌曲后,当我按下订阅按钮时,它会为每首收听的歌曲附加一个播放列表。
例如:我听了专辑的 3 首歌曲,然后按订阅:它将为每首歌曲附加 3 个播放列表。然后:如果我然后听另一张专辑中的歌曲,当按下订阅时,它将附加新歌曲和前 3 首歌曲的播放列表。这种情况一直发生,直到我重新加载应用程序。
似乎它会记住加载应用程序后听的每首歌曲。
这是我的代码:
函数订阅(){
//Cache important information
var playerTrackInfo = player.track;
var track = playerTrackInfo.data;
var albumUri = track.album.uri;
var albumTitle = track.album.name;
var artistFromAlbum = track.album.artist.name;
//Click event on button
$(".subscribe button").on("click", function(playlist){
console.log("I work!"); //Checks if button click works
//Creates new playlist "Albumtitle - Artistname"
var playlist = new models.Playlist(albumTitle+" - "+artistFromAlbum);
//Fills in playlist with album from current playing track
models.Album.fromURI(albumUri, function(album){
$(album.tracks).each(function(i) {
playlist.add(album.tracks[i]);
});
});
playlist.subscribed = true;
playlist.observe(models.EVENT.CHANGE, function() {
console.log("Playlist was subscribed!");
});
});
}
我需要一种方法来防止这个问题。我尝试了很多不同的方法,无休止地搜索网络,但到目前为止没有运气。任何帮助或指向正确的方向都会很棒!
我已经解决了这个问题。
导致该错误的原因有 2 个。以下是解决方案:
我将所有变量都放在点击事件中。
我在代码中的其他地方有一个事件侦听器,这使得它也有错误。该事件侦听器检测到他们的玩家状态是否已更改,如果为 true,它将刷新初始化。但是,它显然将变量堆叠在我的订阅()中。在将其从 eventListener 中取出并替换 var 之后,它终于可以正常工作。
function subscribe(){ //Click event on button within div with class 'subscribe' $(".subscribe button").on("click", function(playlist){ console.log("I work!"); //Checks if button click works //Cache important information var playerTrackInfo = player.track; var track = playerTrackInfo.data; var albumUri = track.album.uri; //Creates new playlist "Albumtitle - Artistname" var albumTitle = track.album.name; var artistFromAlbum = track.album.artist.name; var playlist = new models.Playlist(albumTitle +" - "+ artistFromAlbum); //Fills in playlist with album from current playing track models.Album.fromURI(albumUri, function(album){ $(album.tracks).each(function(i) { playlist.add(album.tracks[i]); }); }); playlist.subscribed = true; playlist.observe(models.EVENT.CHANGE, function() { console.log("Playlist was subscribed!"); });
});}
感谢您帮助人们!
好吧,它每次都会制作一个全新的播放列表,因为您在每次点击时都会这样做:
var playlist = new models.Playlist(albumTitle+" - "+artistFromAlbum);
那行中的new
确实意味着它;-)
如果您想通过多次点击使用相同的播放列表,请将您创建的播放列表存储在变量中的某个位置,以便以后可以再次访问它。不幸的是,目前无法查看用户拥有的播放列表列表。
- 防止Iframe窗体在新窗口中打开
- 有没有一种方法可以防止img get请求使用css或js发生
- 防止Alt+Shift默认操作或检测多种操作系统语言的Javascript
- 如何防止网页加载后自动启动功能
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- 防止默认锚点行为AngularJS
- 如何防止jQueryonclick事件中的Ruby方法在页面刷新时执行
- 我希望只有在我滚动页面后才能显示我的返回页首图标
- 防止ng重复中的重复值(AngularJS)
- ExtJS网格单元格编辑器,防止焦点松动问题
- 防止jQuery Mobile中的ajax缓存
- 如何防止在使用.val()时引入XSS漏洞
- 从Javascript警报中防止换行
- json-ajax动画防止通过php发送数据
- 针对重复发生的事件,使用moment.js防止DST偏移
- 如何防止Math.max()返回NaN
- Javascript在处理函数时防止单击
- 如何防止多个ajax查询在“;prev“;按钮被点击多次
- 当我在节点上拖动鼠标时,我如何防止使用d3.ehavior.zoom().on(“缩放”,重绘)
- Spotify:如何防止它记得听了1首以上的歌曲