Как установить флажок на основе другого состояния флажка в AngularJs?
Ниже мой сценарий.
У меня есть 2 флажка с именем A & B, которые находятся внутри элемента ng-repeat. Возможные состояния этих 2 флажков:
- Когда A правдив, B может быть правдивым или ложным
- Когда А ложный, В никогда не может быть правдой.
Ниже приведен мой код, который я пробовал с помощью ng-check, но поскольку ng-check не допускает ng-model вместе с ним, я не смог найти решение.
ПРИМЕЧАНИЕ. Мне нужно зафиксировать оба этих флажка в моей модели.
<tbody>
<tr ng-repeat="vehicle in editor.vehicles">
<td>
<v-check name="A" ng-model="vehicle.modelA"></v-check>
</td>
<td>
<v-check name="B" ng-model="vehicle.modelB" ng-checked="vehicle.modelA"></v-check>
</td>
</tr>
</tbody>
Выше код использует директиву v-check
что ничего, кроме флажка.
РЕДАКТИРОВАТЬ: шаблон моего v-check
директива: <label class='checkbox-inline'><input ng-model='ngModel' type='checkbox'>{{text}}</label>
Заранее спасибо.
2 ответа
Решение
Ниже мое решение проблемы, которое также исправляет сценарий, предложенный @entre в его комментарии.
<tbody>
<tr ng-repeat="vehicle in editor.vehicles">
<td>
<v-check name="A" ng-model="vehicle.modelA" ng-click="vehicle.modelB=false"></v-check>
</td>
<td>
<v-check name="B" ng-model="vehicle.modelB" ng-disabled="!vehicle.modelA"></v-check>
</td>
</tr>
</tbody>
Используйте ng-disabled для B:
<tbody>
<tr ng-repeat="vehicle in editor.vehicles">
<td>
<v-check name="A" ng-model="vehicle.modelA"></v-check>
</td>
<td>
<v-check name="B" ng-model="vehicle.modelB" ng-disabled="!vehicle.modelA"></v-check>
</td>
</tr>
</tbody>
Я уже проверял этот код:
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - example-example54-production</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
</head>
<body ng-app="">
<label>Click me to toggle: <input type="checkbox" ng-model="checked"></label><br/>
<input type="checkbox" ng-model="button" ng-disabled="checked">
</body>
</html>