2016-07-12 40 views
0

嗨,我是新的angularjs。我使用角度版本1. 我有和通过http播放音乐的应用程序。angularjs从一个巨大的列表更新单个元素

因此,它基本上显示了成千上万的歌曲作为缩略图,其中每个磁贴包含播放/暂停按钮。 此外,还有一个包含播放/暂停/下一个按钮的迷你播放器的页脚

所以我的要求是如何从这个巨大的列表中切换播放/暂停按钮。

现在我正在为每个tile分配track id作为id,并通过使用jquery切换class来更新元素。它需要太多的时间来更新列表。

谁能告诉我这个最好的解决方案。 在此先感谢。

这里是我的示例代码

var item = $('.pause-btn') 

    $('.pause-btn').removeClass('pause-btn') 

    $('div').find("[data-index='" + btoa('track_' + CurrentSongId) + "']").addClass('pause-btn') 
+0

请问您可以添加一些代码或提供一个plunker? –

+0

您可以在每首歌曲上分享播放/暂停按钮,例如在页脚中有播放/暂停组件。然后,您需要将当前歌曲“id”存储在可通过页脚访问的某个位置,也可以在服务中存储。然后当你点击播放/暂停时,你只需要获得这个特定的'id'并且做你的动作。 – rocketer

+0

@rocketer我没有得到那个。你可以再解释一次 –

回答

1

我会用下面的示例

<div> 
    <p class=track.isPlaying==true?'pause':'play' ng-click=update(track)> 
    <img src="albumart.jpeg"> 
    </p> 
    </div> 


//on controiller 
    $scope.update=function(track) 
    { 
    track.isPlaying=!track.isPlaying 
    } 
+0

是的,这对我有效 –

0

你示例代码什么都没有做angularjs,我猜你可能要达到这样的事:

$('div') 
.find("[data-index='" + btoa('track_' + CurrentSongId) + "']") 
.addClass('pause-btn') 
.siblings() 
.removeClass('pause-btn');