Отслеживание статуса флажка и использование нескольких данных для ng-модели - PullRequest
0 голосов
/ 02 июня 2018

У меня здесь ситуация.У меня есть два флажка.

<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 - это значения, которые я получаю из базы данных.И в зависимости от station.val.fingerprint_scanner и station.val.id_card флажок установлен и снят.

Теперь, поскольку я уже назначил ng-model.Как я могу получить значения station.val.fingerprint_scanner и station.val.id_card, если пользователь внес какие-либо изменения.В зависимости от текущей ситуации.Я непосредственно вызвал функцию updateAccessMode() и присвоил статическое значение, подобное этому

reqdata.access_mode = JSON.stringify({
    "id_card" : true,
    "fingerprint_scanner" : true
})

Так что в соответствии с этим, независимо от того, что, если установлен флажок, id_card и fingerprint_scanner всегда будут истинными.В основном у меня есть жестко закодированные значения здесь.Теперь я хочу, чтобы эти значения были истинными или ложными в зависимости от состояния флажка.Теперь я уже использовал ng-model. Так что я запутался здесь, как мне отслеживать состояние флажка.

Одно из возможных решений, которое я могу придумать, - связать несколько значений с ng-model.Но я думаю, что это не рекомендуется.Или есть другое лучшее решение?

ПРИМЕЧАНИЕ. Флажки установлены в ng-repeat.Я не хочу менять ng-model

Ответы [ 2 ]

0 голосов
/ 02 июня 2018

ОК. Итак, я разобрался с этим решением.Я узнал, что мне не нужно двухстороннее связывание данных для флажков, поэтому я удалил ng-model.Извините за это недоразумение.И использовал ng-checked как упомянуто @Karthikeyan, +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>

И JS для этого

if(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
            })
}
0 голосов
/ 02 июня 2018

Используйте ng-checked="station.val.fingerprint_scanner" вместо ng-model="station.val.fingerprint_scanner" и используйте ng-click для обновления требуемого значения или даже присвойте его ng-model="station.key.fingerprint_scanner".

Трудно дать точное решение, так как вы не передали свой код повторения ng и что делает функция updateAccessMode()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...