私はangularJSでng-repeatチェックボックスを持っていました。ライブラリcheckboxlistを使用して、ng-repeatで複数のチェックボックスを実装しています。ユーザーがチェックボックスの最大数をクリックできるという要件がありました。私は$ event.stopPropagationを使用しましたが、動作しますが、チェックボックスリストにアクセスする方法がわからないので、モデルは更新されません。私は第三のチェックボックスを選択するとクリックしてチェックボックスのリストを停止
コントローラ
$scope.mealCBChanged = function($event, mc){
if(mc.selectedCBId.length > 2){
$event.preventDefault();
alert("You can't select more than " + 2);
}
}
HTML
<div ng-repeat="mc in mealC">
<div ng-repeat="m in mc.meals">
<input type="checkbox" name="{{ m.id }}"
id="{{ m.name }}"
checklist-model="mc.selectedCBId"
ng-init="mc.selectedCBId = []"
ng-click="mealCBChanged($event, mc)"
checklist-value="m.name"/>
<label for="{{ m.name }}"><span class="checkbox primary primary"><span></span></span>{{ m.name }}</label>
</div>
</div>
問題
は、アラートが起動され、トン$ event.preventDefault()が正常に動作しているため、hirdチェックボックスがクリックされません。しかし、mc.selectedCBIdは配列内に3つの項目を持っています。おそらく2つの項目があります。
あなたは第四のチェックボックスを選択した場合、mc.selectedCBIdは、配列内の3つのまたは4のアイテムを持っているのだろうか? –
@GaliloGalilo mc.selectedCBIdは、チェックボックスをクリックするとアイテムを継続的に追加します。 –