javascript - 排列表格后保持所选元素突出显示

标签 javascript html angularjs

我在 AngularJS 中有一个表,其中有几列,每列都可以按升序和降序排序。我希望每当用户单击一行时就选择它。我通过获取表的选定索引来做到这一点。但是,一旦我重新选择其中一列,所选行就会保持突出显示状态。我想要做的是保持先前选择的项目突出显示......无论其新索引在排序后可能在哪里。这是一个代码片段:

我的表体:

<tbody>
    <tr
      ng-class="{'selected':$index == list.selectedRow}"
      ng-repeat="item in list.itemList | order:list.orderBy:list.orderAsc">
      <td ng-click="list.select(item);list.setClickedRow($index)">{{ item.number }}
      </td>
      <td ng-click="list.select(item);list.setClickedRow($index)">{{ item.name }}
      </td>
    </tr>
</tbody>

设置选中行的方法:

function setClickedRow(index) {
    vm.selectedRow = index;
}

最佳答案

基于Slonski answer ,我建议您在更改选择时循环遍历所有项目以设置 selected = false:

function setClickedRow(item) {
  for(var i = 0; i < $scope.list.itemList.length; i++) {
    if(item == $scope.list.itemList[i]) item.selected = true;
    else $scope.list.itemList[i].selected = false;
  }
  item.selected = true;
}
<小时/>

更新:没有循环的解决方案

var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', ['$scope', function($scope) {
  $scope.setMaster = function(section) {
    $scope.selected = section;
  }

  $scope.isSelected = function(section) {
    return $scope.selected === section;
  }
}]);
.active {
    background-color: orange;
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="myApp" ng-controller="MyCtrl">
    <table>
      <tr ng-repeat="i in ['One', 'Two', 'Three']" ng-class="{active : isSelected(i)}">
        <td ng-click="setMaster(i)">{{i}}</td>
      </tr>
    </table>
    <hr> {{selected}}
</div>

关于javascript - 排列表格后保持所选元素突出显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41696759/

相关文章:

javascript - 在没有时区的App Script中获取数据列

javascript - string.length 是否在调用 string.length 时计算长度

javascript - Tinymce 获取内容

JavaScript Img 在提示对话框期间暂停?

javascript - 避免 AngularJS 栏脚重叠内容

javascript - 我的 anchor 标记没有采用 javascript 函数和 php 中的内联样式表

javascript - 有2套相互影响的菜单好吗?

javascript - 如何在 Angular 2 中对指令进行单元测试?

javascript - ionic 列表中的图标不可点击

javascript - 如何使用angularjs检查所选时间小于当前时间或大于当前时间?