AngularJS: Как отключить флажки после указанной суммы?
У меня есть флажки в цикле, как показано ниже:
<li ng-repeat="item in items">
<h2> {{item.better}}</h2>
<span>{{item.startTime}}</span>
<b> {{item.lengthTime}}</b>
<input type="checkbox" checklist-model="item.winner" checklist-value="item">
</li>
Я хочу установить лимит, чтобы пользователи могли выбирать только максимум 50 флажков и не более того (из общего количества элементов в списке i.e 100 или 200 и т.д.).
Как это сделать, используя angular js?
Помощь будет действительно оценена.
Спасибо.
Ответы
Ответ 1
FIDDLE
$scope.checkChanged = function(item){
if(item.winner) $scope.checked++;
else $scope.checked--;
}
и
<input type="checkbox" ng-model="item.winner" ng-change="checkChanged(item)" ng-disabled="checked==limit && !item.winner"/>
это отслеживает проверку с помощью ng-change и отключает их, если предел достигнут, а флажок не установлен.
не использует $watch из-за возможности ~ 200 флажков.
Изменить: извините, забыл нажимать обновление на скрипке, теперь он должен работать. Также обратите внимание, что ограничение установлено на 4 с помощью $scope.limit = 4
;
Ответ 2
вы можете запросить количество элементов и использовать ng-disabled
<input type="checkbox" ng-disabled="!item.value && items.length > 50" />
Обновление:
как указано в комментариях, ответ неверен. Но я думаю, что вы получили (и другие ребята, которые ответили) правильную идею, как выполнить то, что вам нужно. Я думаю, необходимая информация для вас - это использовать ng-disabled
.
Мне нравится Aperçu ответить больше всего:)