我正在使用Spotify的Apps API的v1.0预览版。尝试通过提供List.forPlaylist(list,opt_options)的opt_options参数来创建自定义列表时,我收到有关未找到DOM元素的错误。这几乎可以肯定是由于我天真的实施。
我的问题是,是否有人举例说明如何将此opt_options与自定义getItem函数一起使用?文档不清楚我要返回或填充的内容。
我的实现(其中播放列表是加载列表):
listView.forPlaylist(playlist, { getItem : function (item, index) {
console.log(item);
console.log(index);
return $("<span>hello, world</span>");
}
}
每次出错:
DOMException code: 8 message: "NOT_FOUND_ERR: DOM Exception 8" name:
"NOT_FOUND_ERR" stack: "Error: An attempt was made to reference a Node
in a context where it does not exist.? at f.createItems
($views/scripts/list/view.js:16:147)? at e.b
($views/scripts/list.js:16:102)? at e.Observable.dispatchEvent
($api/scripts/models.js:4:322)? at Promise.f.snapshot
($views/scripts/list/model.js:9:244)? at Promise.done
($api/scripts/models.js:6:157)? at f.snapshot
($views/scripts/list/model.js:7:241)? at e.more
($views/scripts/list.js:4:138)? at f.moreWithLimit
($views/scripts/list/model.js:17:127)? at f.checkResizeEdge
($views/scripts/list/view.js:13:457)? at f.init.b
($views/scripts/list/view.js:3:3)"
欢迎任何想法。一个例子,更是如此; - )
答案 0 :(得分:1)
您应该返回一个DOM元素,而不是一个jQuery对象。为此,您需要返回
$("<span>hello, world</span>")[0];
而不是返回
$("<span>hello, world</span>");
您可以在jQuery object and DOM element上了解有关它们之间差异的更多信息。
在这里,您有一个完整的示例,说明如何在Spotify应用中注入List view:
require([
'$api/models',
'$views/list#List'
], function (models, List) {
'use strict';
var playlist = models.Playlist.fromURI('spotify:user:nowplaylist:playlist:6QHyDeqaPNZ0nyLFJbSKTL');
var listView = List.forPlaylist(playlist, {
getItem : function (item, index) {
console.log(item);
console.log(index);
return $("<span>hello, world</span>")[0];
}
});
document.body.appendChild(listView.node);
listView.init();
});