我有一个情况。我有两个复选框。
<span class="flex-3"><input type="checkbox" ng-model="station.val.fingerprint_scanner" ng-click="updateAccessMode(station.key,'fingerprint_scanner', station.config_group)" /></span>
<span class="flex-3"><input type="checkbox" ng-model="station.val.id_card" ng-click="updateAccessMode(station.key,'card_scanner', station.config_group)" /></span>
station.val.fingerprint_scanner
和station.val.id_card
是我从数据库中获取的值。根据{{1}}和station.val.fingerprint_scanner
,复选框将被选中并取消选中。
现在我已经分配了station.val.id_card
。如果用户进行了任何更改,我如何获得ng-model
和station.val.fingerprint_scanner
的值。视目前情况而定。我直接调用了函数station.val.id_card
并分配了一个像这样的静态值
updateAccessMode()
所以根据这个,无论如何点击一个复选框,id_card和fingerprint_scanner总是会成立。基本上我在这里有硬编码值。现在我希望这些值为true或false,具体取决于复选框状态。现在我已经使用了reqdata.access_mode = JSON.stringify({
"id_card" : true,
"fingerprint_scanner" : true
})
。所以我很困惑,我将如何跟踪复选框状态。
我能想到的一个可能的解决方案是使用ng-model
绑定多个值。但我认为不推荐。或者还有其他最佳解决方案吗?
注意:此复选框位于ng-model
。我不想更改ng-repeat
答案 0 :(得分:2)
使用ng-checked="station.val.fingerprint_scanner"
代替ng-model="station.val.fingerprint_scanner"
,并使用ng-click
更新所需的值,甚至将其分配给ng-model="station.key.fingerprint_scanner"
。
很难提供准确的解决方案,因为您尚未共享ng-repeat代码以及updateAccessMode()
函数的作用
答案 1 :(得分:0)
好的所以我想出了这个解决方案。我开始知道我不需要双向数据绑定复选框,所以我删除了ng-model
。对此误解感到抱歉。并使用@Karthikeyan提到的ng-checked
,+1。并根据其索引更新了复选框状态。
这是html
<span class="flex-3"><input type="checkbox" ng-checked="station.val.fingerprint_scanner" ng-click="updateAccessMode(station.key,'fingerprint_scanner', station.config_group, $index)" /></span>
<span class="flex-3"><input type="checkbox" ng-checked="station.val.id_card" ng-click="updateAccessMode(station.key,'card_scanner', station.config_group, $index)" /></span>
和那个
的JSif(mode == "fingerprint_scanner"){
reqdata.access_mode = JSON.stringify({
"id_card" : id_card_data,
"fingerprint_scanner" : !fingerprint_data
})
}else{
reqdata.access_mode = JSON.stringify({
"id_card" : !id_card_data,
"fingerprint_scanner" : fingerprint_data
})
}