angular ng-class 添加 class 除了当前
angular ng-class add class to all except current
我在 table 中有一个复选框,当我选中一个复选框时,我想将禁用 class 添加到所有其他复选框,我尝试使用 ng-class[=15 来实现这一点=]
<td scope="row">
<input
type="checkbox"
id="{{$index}}"
ng-class="{disabled: $index != currentid}"
ng-click="showOptions($event,'$index')" />
</td>
控制器内部
$scope.showOptions=function($event,id){
if($event.target.checked){
$scope.btns = true;
$scope.details_tab = true;
$scope.currentid = id;
}
else {
$scope.btns = false;
$scope.details_tab = false;
}
};
但是在页面加载所有复选框时使用它已禁用 class。
或许您可以在 currentid 上添加验证。仅当 'currentid' 中有内容且 $index 不是 currentid 时才添加 class。
现在您可以在页面加载时将 currentid 设置为 undefined。
<td scope="row"><input type="checkbox" id="{{$index}}" ng-class="{disabled: $index != currentid && currentid}" ng-click="showOptions($event,'$index')"></td>
调用showOptions
时,$index
不需要是值为'$index'
的字符串。它需要是值 $index
:
<td scope="row">
<input type="checkbox"
id="{{$index}}"
ng-class="{disabled: $index != currentid}"
ng-click="showOptions($event, $index)"/>
</td>
否则,您会将文字值 $index
与整数索引(例如 0
)进行比较。
but using this when the page loads all checkboxes have disabled class.
这是因为在页面加载时,所有 $index 值都与 currentid 不同,后者只能在点击后设置。
您需要确保选中了复选框:
$scope.showOptions = function ($event, id) {
if ($event.target.checked) {
$scope.btns = true;
$scope.details_tab = true;
$scope.currentid = id;
$scope.disableCheckboxes = true; //checking a checkbox
} else {
$scope.btns = false;
$scope.details_tab = false;
$scope.disableCheckboxes = false; //unchecking a checked checkbox
}
};
而在 HTML 中,您需要在 ng-click
中考虑这一点(您也不需要像其他人所说的 $index
上的引号):
<td scope="row">
<input
type="checkbox"
id="{{$index}}"
ng-class="{disabled: disableCheckboxes && $index != currentid}"
ng-click="showOptions($event,$index)" />
</td>
我在 table 中有一个复选框,当我选中一个复选框时,我想将禁用 class 添加到所有其他复选框,我尝试使用 ng-class[=15 来实现这一点=]
<td scope="row">
<input
type="checkbox"
id="{{$index}}"
ng-class="{disabled: $index != currentid}"
ng-click="showOptions($event,'$index')" />
</td>
控制器内部
$scope.showOptions=function($event,id){
if($event.target.checked){
$scope.btns = true;
$scope.details_tab = true;
$scope.currentid = id;
}
else {
$scope.btns = false;
$scope.details_tab = false;
}
};
但是在页面加载所有复选框时使用它已禁用 class。
或许您可以在 currentid 上添加验证。仅当 'currentid' 中有内容且 $index 不是 currentid 时才添加 class。 现在您可以在页面加载时将 currentid 设置为 undefined。
<td scope="row"><input type="checkbox" id="{{$index}}" ng-class="{disabled: $index != currentid && currentid}" ng-click="showOptions($event,'$index')"></td>
调用showOptions
时,$index
不需要是值为'$index'
的字符串。它需要是值 $index
:
<td scope="row">
<input type="checkbox"
id="{{$index}}"
ng-class="{disabled: $index != currentid}"
ng-click="showOptions($event, $index)"/>
</td>
否则,您会将文字值 $index
与整数索引(例如 0
)进行比较。
but using this when the page loads all checkboxes have disabled class.
这是因为在页面加载时,所有 $index 值都与 currentid 不同,后者只能在点击后设置。
您需要确保选中了复选框:
$scope.showOptions = function ($event, id) {
if ($event.target.checked) {
$scope.btns = true;
$scope.details_tab = true;
$scope.currentid = id;
$scope.disableCheckboxes = true; //checking a checkbox
} else {
$scope.btns = false;
$scope.details_tab = false;
$scope.disableCheckboxes = false; //unchecking a checked checkbox
}
};
而在 HTML 中,您需要在 ng-click
中考虑这一点(您也不需要像其他人所说的 $index
上的引号):
<td scope="row">
<input
type="checkbox"
id="{{$index}}"
ng-class="{disabled: disableCheckboxes && $index != currentid}"
ng-click="showOptions($event,$index)" />
</td>