我已经研究了相当数量,并且无法找到解决这一特定主题的任何内容。
我希望获取当前用户库中的所有艺术家,或者甚至是特定的播放列表,例如“已加星标”播放列表。
当我尝试进入播放列表中的艺术家或曲目时,我会回到'undefined'
。
我做错了吗?
这是我用来显示库对象的一些基本的javascript,我得到的就是图片中的内容,但我不知道如何进入单独的曲目和艺术家。有帮助吗?
require(['$api/models','$api/library'], function(models, library){
'use strict';
var Library = library.Library.forCurrentUser();
console.log(Library.starred);
});
以下是我要回来的模特的图片:http://i.imgur.com/ERo0Cx9.png
答案 0 :(得分:1)
稍微复杂一些。 Library.starred
是一个Playlist
对象,它延迟加载属性。因此,您需要传递要加载的属性,在本例中为tracks
。由于曲目是Collection,因此您需要执行Snapshot,一旦获得曲目,您需要指定要从曲目加载的属性。
以下是从已加星标的播放列表中获取所有曲目并打印出其名称和uri的代码:
require(['$api/models','$api/library'], function(models, library){
'use strict';
var Library = library.Library.forCurrentUser();
Library.starred.load('tracks').done(function(playlist) {
playlist.tracks.snapshot().done(function(tracks) {
var promises = [];
// we fetch all the tracks
for (var i = 0, l = tracks.length; i < l; i++) {
var track = tracks.get(i);
// fetch the information we need from the tracks
// e.g. uri and name
promises.push(track.load('uri', 'name'));
}
models.Promise.join(promises).done(function(tracksPromises) {
tracksPromises.forEach(function(tp) {
console.log(tp.uri + ' - ' + tp.name);
});
});
});
});
});