当前位置: 代码迷 >> JavaScript >> 如何更改ng-repeat上的图标
  详细解决方案

如何更改ng-repeat上的图标

热度:104   发布时间:2023-06-05 09:44:22.0

我试图在用户选择列表中的项目时更改图标。我设法在单击该项目时更改图标,但是如果用户单击其他项目,我想将上一个项目更改为初始化状态(例如播放音乐和暂停)会出现问题。

我的模板:

  <div class="list">
        <a ng-repeat="item in items"
           class="item item-thumbnail-left item-button-right" ng-init="item.playing = false">
            <img ng-src="{{ item.user.avatar_url }}">
            <h2>{{ item.title }}</h2>
            <h4>{{ item.artist }}</h4>
            <button class="button button-positive" ng-click="selectItemToPlay(item);item.playing = !item.playing">
                <i class="{{item.playing == true && 'ion-pause' || 'ion-play'}}"></i>
            </button>
        </a>
    </div>

您可以在另一个变量中跟踪所选项目(例如其itemId或$ index)。 说出selectedItemId。 这对于ng-repeat应该是通用的,而不是为每个ng-repeat设置初始化。

单击项目设置此变量。

<button class="button button-positive" ng-click="selectItemToPlay(item);item.playing = !item.playing;selectedItemId=item.Id">

如果选定的项目ID与单击的项目ID不同,则将其他项目设置为初始化状态。

<i ng-class="{'ion-pause' : item.playing, 
            'ion-play' : !item.playing || selectedItemId !== item.id}"> </i>

//一起

<div class="list">
    <a ng-repeat="item in items"
       class="item item-thumbnail-left item-button-right" ng-init="item.playing = false">
        <img ng-src="{{ item.user.avatar_url }}">
        <h2>{{ item.title }}</h2>
        <h4>{{ item.artist }}</h4>
        <button class="button button-positive" ng-click="selectItemToPlay(item);item.playing = !item.playing;selectedItemId=item.Id">
            <i ng-class="{'ion-pause' : item.playing, 
            'ion-play' : !item.playing || selectedItemId !== item.id}"> </i>
        </button>
    </a>
</div>
 <i ng-class="{'ion-pause' : item.playing,
               'ion-play' : !item.playing}">
 </i>

要么

 <i ng-class="{item.playing ? 'ion-pause' : 'ion-play'}">
 </i>

我认为您正在寻找指令,该指令根据表达式有条件地设置CSS类。 对于您的代码:

  <i ng-class="{'ion-pause': item.playing, 'ion-play': !item.playing}"></i> 

  相关解决方案