我正在制作一个播放列表。我有这个ng-repeat,当前歌曲突出显示
<div ng-repeat="song in songs_list">
<div ng-class="{'true':'current-song'}[song == current_song]">
{{song.title}}
</div>
</div>
现在在JS中我改变了current_song
的值。我想将类current-song
应用于当前正在播放的新元素。
答案 0 :(得分:1)
将歌曲集$ scope.current_song更改为新歌曲和HTML:
<div ng-repeat="song in songs_list">
<div ng-class="{'current-song':song===current_song}">
{{song.title}}
</div>
</div>
答案 1 :(得分:0)
你应该这样写
<div ng-repeat="song in songs_list">
<div ng-class="{'current-song': song == current_song}">
{{song.title}}
</div>
</div>
答案 2 :(得分:0)
使用此语法,尝试使用此
<div ng-repeat="song in songs_list">
<div ng-class="{'current-song':song.title == current_song}">
{{song.title}}
</div>
</div>
我建议,使用song.id
代替song.title
,并将current_song的id保留为歌曲ID。
答案 3 :(得分:0)
ng-repeat
的工作方式是,它创建了一个子范围,它原型继承自当前范围。因此,内部current_song
值不会更新。我不想再重复一遍,为什么它不起作用,你可以找到explanation here。您必须使用Dot Rule
才能在current_song
内获得正确的选定ng-repeat
值,&amp;有条件的时候你应该将它与unique_id进行比较(假设你有id
道具)。
$scope.model = {
current_song: null
};
<强> HTML 强>
<div ng-repeat="song in songs_list">
<div ng-class="{'current-song': song.id == model.current_song.id}">
{{song.title}}
</div>
</div>