我正在尝试构建一个包含播放列表的spotify应用。我需要为播放列表视图提供其他列。我无法将html注入到视图中,因为模型会在不久之后覆盖编辑内容。有没有办法将自己的数据添加到播放列表项?目前我有一个使用另一个< ul>的hack。在播放列表视图旁边。这看起来像是播放列表的扩展,但缺乏很多功能。
更新:这是我最终做的事情。这在很大程度上得益于以下评论。
playlistModel = new models.Playlist();
var playlistView = new views.List(playlistModel, function(track) {
var myData = getDataFor(track.data.uri);
var trackView = new views.Track(track,
views.Track.FIELD.NAME |
views.Track.FIELD.ARTIST |
views.Track.FIELD.DURATION |
views.Track.FIELD.ALBUM);
var name = document.createTextNode(myData.name);
var img = document.createElement('img');
img.src = 'https://graph.facebook.com/' + myData.friendID + '/picture';
img.className = 'friendPic';
img.alt = 'facebook profile picture of ' + myData.friendName;
var span = document.createElement('span');
span.appendChild(img);
span.appendChild(name);
trackView.node.insertBefore(span, trackView.node.firstChild);
return trackView;
});
$('#playlist').append(playlistView.node);
答案 0 :(得分:1)
我得到了这个工作,但我不确定它是否是一个好的和可靠的生产计划,因为它将取决于内部数据结构。
//Code alters the list returned from views.List and appends a column with the text PLAY.
var results = document.getElementById('idOfElementToDisplayListIn');
var pl = models.Playlist.fromURI(playlist_url, function(playlist) {
var list = new views.List(playlist, function (track) {
var ntrack=new views.Track(track,
views.Track.FIELD.NAME |
views.Track.FIELD.ARTIST |
views.Track.FIELD.DURATION |
views.Track.FIELD.ALBUM);
var aNode = document.createTextNode("PLAY");
ntrack.node.appendChild(aNode);
return ntrack;
});
results.appendChild(list.node);
});