0

我已经对此进行了相当多的研究,但找不到任何解决此特定主题的内容。

我想获取当前用户库中的所有艺术家,甚至只是从特定播放列表中获取,例如“已加标”播放列表。

当我尝试进入播放列表中的艺术家或曲目时,我会'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

4

1 回答 1

1

它比这稍微复杂一些。Library.starred是一个Playlist延迟加载属性的对象。因此,在这种情况下,您需要传递要加载的属性tracks。由于轨道是一个集合,因此您需要执行快照,一旦您拥有轨道,您需要指定要从轨道加载的属性。

以下是从您已加星标的播放列表中获取所有曲目并打印出它们的名称和 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);
                });
            });
        });
    });
});
于 2014-05-17T06:06:01.870 回答