0

如果 href 包含 spotifyURI,我正在尝试在选项卡播放列表中显示 div。这将用于在选项卡下显示播放列表。

一步一步这是我的问题:

  1. 单击播放列表选项卡,然后单击“我的播放列表1”。
  2. href 显示在播放列表选项卡下的播放列表容器中。(到目前为止完美)
  3. 单击开始选项卡,然后单击播放列表选项卡。
  4. 不再显示播放列表列表,而是再次显示播放列表容器。那么最后使用的url被缓存了吗?
  5. 然后,如果再次单击播放列表选项卡,则 url 将被“重置”,播放列表列表将显示并隐藏播放列表容器。

我希望 4. 立即显示播放列表。有没有办法重置或我错过了什么?

<script>
$(document).ready(function() {
    sp = getSpotifyApi(1);   
    var m = sp.require("sp://import/scripts/api/models");
    updateTabs();
    m.application.observe(m.EVENT.ARGUMENTSCHANGED, updateTabs);
    function updateTabs() 
    {   
        console.log(m.application.arguments);
        var args = m.application.arguments;
        $('.section').hide();
        if (args[1] == "spotify") $("#playlist").html("args:"+args).show();
        else $("#"+args[0]).show();
    }
});
</script>

<div id="playlist" class="section">Container for playlist content</div> 
<div id="start" class="section">Welcome</div>  
<div id="playlists" class="section"> 
My <a href="spotify:app:tabtest:playlists:spotify:user:_username_:playlist_uri1">playlist1</a>
My <a href="spotify:app:tabtest:playlists:spotify:user:_username_:playlist_uri2">playlist2</a>
</div> 

非常感谢所有回复!

4

2 回答 2

1

以下是我将如何继续使用 JQuery。

首先,您需要使用 Localstorage :

var stor = sp.require("sp://import/scripts/storage");

然后,例如,如果您获得播放列表列表,则可以像这样构建列表

for (var i=0; i<d.playlists.length; i++) {
$('#playlists').append('My <a id="p' + i + '"href="'+ d.playlists[i] +'">playlist1</a>');
$('#playlists #p'+i).live('click', function(e) {
e.preventdefault();
stor.set('choosenplaylist', d.playlists[i]);
});
}

这是现在用于更改 tad 时的存储:

if (!stor.get('choosenplaylist')=='') {
location.href=stor.get('choosenplaylist');
}

好的,这是一个建议,需要针对您的应用进行测试。

于 2012-05-31T07:58:07.897 回答
0

我现在尝试这个,我可以重现你的错误(我猜这是一个错误,我认为标签应该替换 url)

但是,在修复之前,我最好的猜测是在事件处理程序中捕获播放列表链接并取消原始事件,在取消后用适当的播放列表视图替换内容。

标签测试代码(在 gist.github.com 上)

我已经从事件处理程序中抽象出实际的视图绑定,并添加了一个单击事件钩子来调用抽象视图绑定器而不是“真实”绑定器,这也支持深度链接到应用程序

于 2012-06-05T15:07:18.843 回答