Выделение строки, не выбранной при угловом нажатии кнопки js

Как выделить строку в таблице? если поле выбора строк не выбрано, оно должно проверить его при нажатии кнопки.

что я пробовал:

$scope.setClickedRow = function (index) {
    $scope.selectedRow = index;
}

<tr id="TableBody" ng-repeat="code in CodeRegister.CodeDetails" ng-class="{selected:$index != selectedRow}">                 
    <td ng-form="form">
      <select id="reasons" name="reasons" ng-model="code.CategoryID" ng-options=""  >
        <option  default value="">Reasons</option></select>

Нажатие кнопки:

<div style="margin-left:70em;" id="Save" class="ribbon-button ribbon-button-large " ng-click="CodeRegister.InsertCodeRegisterDetailss(myForm) && setClickedRow($index)">
</div>

Теперь при загрузке он выделяет все, я только хочу, чтобы он выделил строки при нажатии кнопки, и если поле выбора не выбрано.

2 ответа

Использование:

ng-class="{true:'selected',false:''}[selectedRow==$index]"

Надеюсь, это работает.

Во-первых, на <tr> элемент, вы должны использовать класс вместо идентификатора, потому что вы ng-repeatэто Также, по соглашению, имена классов пишутся с использованием тире. Так что подумайте о замене:

<tr id="TableBody" ng-repeat="code in CodeRegister.CodeDetails" ...>

с

<tr class="table-body" ng-repeat="code in CodeRegister.CodeDetails" ...>

Что касается "на нагрузке, это подчеркивает все", это потому, что $scope.selectedRow не определено, пока вы не вызвали клик. Поэтому условие $index != selectedRow верно, поэтому вы поставили класс selected на всех рядах. Рассмотрим это значение для ng-class:

ng-class="{selected: selectedRow && $index !== selectedRow}">
Другие вопросы по тегам