javascript - 一旦在javascript中选择了一行,如何取消选择其他行?
问题描述
我有一张包含用户信息的表格。我想选择一行(一个对象)并显示选择图标,一旦我选择了一行,我想取消选择另一行(上一个选择的行)但是,使用我的代码,如果没有再次选择行,则会累积选择行.
我创建的代码:
this.selectRow = function (row) {
if (this.isClickable()) {
$scope.properties.selectedRow = row;
}
if (row.selected === undefined)
row.selected = false;
row.selected = !row.selected;
};
this.isSelected = function(row) {
return angular.equals(row, $scope.properties.selectedRow) ;
};
和 HTML 表是:
<tbody ng-if="ctrl.isArray(properties.content) && ctrl.isArray(properties.columnsKey)">
<tr ng-repeat="row in properties.content" ng-click="ctrl.selectRow(row)" ng-class="{'info': ctrl.isSelected(row)}">
<td> <span class="glyphicon glyphicon-ok" ng-show="row.selected"></span></td>
<td ng-if="!properties.allowHTML" ng-repeat="column in properties.columnsKey track by $index">
{{ $eval(column, row) | uiTranslate }}
</td>
<td ng-if="properties.allowHTML" ng-repeat="column in properties.columnsKey track by $index">
<div ng-if="properties.allowHTML" ng-bind-html="$eval(column, row) | uiTranslate"></div>
</td>
</tr>
</tbody>
它似乎工作正常,我可以选择和取消选择行并且图标显示正确隐藏。但是,我需要取消选择之前已经选择的行。
选定的行对象是:
{“userName”:“user1”,“userId”:“23”,
“selected”:true } {“userName”:“user1”,“userId”:“23”,
“selected”:false }
任何帮助将不胜感激谢谢。
解决方案
在这里,我正在重置上一个选定的行。我将其属性设置为 false。
this.selectRow = function(row) {
// if row is already selected, deselect it.
if (row.selected) {
row.selected = false;
} else {
// find the row which was previously selected.
const isRowSelected = $scope.properties.content.filter((item) => item.selected === true);
if (isRowSelected.length > 0) {
// if row found successfully, mark that row as deselected
$scope.properties.content.filter((item) => item.selected === true)[0].selected = false;
}
// mark new row as selected
row.selected = true;
}
if (this.isClickable()) {
$scope.properties.selectedRow = row;
}
if (row.selected === undefined) {
row.selected = false;
}
};
this.isSelected = function(row) {
return angular.equals(row, $scope.properties.selectedRow);
};
推荐阅读
- pandas - 多个索引上的 Groupby 和最小
- r - 根据传单闪亮输入更改数据
- r - 如何根据值的动态子集获取数据框?
- c - 在 ctypes python 包装器中使用 python 包
- angular - Angular - 如何使用继承创建真正的父组件?
- c# - 无论如何撤消在c#中删除的断点?
- wpf - 如何将命令绑定到 DataTemplate 中生成的 TreeViewItem 的 Selected 属性?
- excel - 我们如何根据列中存在的数据将 excet 表中的列拆分为两列?
- python - 时间戳对于日期时间来说太大了
- flutter - Flutter-如何在一行中的特定位置对齐按钮?