Sto confrontando una variabile con un array: $scope.object.id
e $scope.groepen.id
con un'istruzione if dopo aver usato un ciclo for. Se $scope.object.id
è esattamente uguale a uno degli ID di $scope.groepen.id
, allora dovrebbe rendere quell'indice di vero.Il looping attraverso array non restituisce il risultato corretto
Sto utilizzando un altro se è stato verificato per verificare se qualcosa di $scope.overlap
è vero. Se un elemento di $scope.overlap
è true, renderà $scope.bestaand
true. Altrimenti dovrebbe renderlo falso.
for (var i = 0; i < $scope.groepen.length; i++) {
if ($scope.object.id === $scope.groepen[i].id) {
$scope.overlap[i] = true;
if ($scope.overlap[i]) {
$scope.bestaand = true;
}
else {
$scope.bestaand = false;
}
}
else {
$scope.overlap[i] = false;
}
}
mio log della console mi dimostra che $scope.overlap
in effetti mostrano i valori corretti (quindi se non è lo stesso, tutti gli indici sono false). $scope.bestaand
diventa vero se qualcosa è uguale, ma non cambia in falso.
che sto usando la validazione dei form angolare per mostrare se il controllo è in funzione o non mostrato qui:
<div class="col-md-3" ng-class="{ 'has-error' : bestaand }">
<label class="control-label" for="textinput">Groepsnaam</label>
<input id="groepen" name="groepen" type="text" class="form-control input-md" ng-model="object.id" ng-minlength="4" ng-maxlength="16" ng-change="checkOverlap()" required>
<p ng-show="bestaand" class="help-block">Deze groepsnaam bestaat al!</p>
</div>
Che cosa sto facendo male qui?
Edit:
ho cambiato il luogo della mia se affermazioni. codice aggiornato mostrato qui:
registrofor (var i = 0; i < $scope.groepen.length; i++) {
if ($scope.object.id === $scope.groepen[i].id) {
$scope.overlap[i] = true;
}
else {
$scope.overlap[i] = false;
}
if ($scope.overlap[i]) {
$scope.bestaand = true;
console.log("works")
}
else {
$scope.bestaand = false;
console.log("doesnt work")
}
}
La console mi mostra questo:
Sembra che lo fa diventare vero, ma viene sovrascritto (ho in ingresso un valore che è la stessa come secondo valore dell'array). Se inserisco un valore uguale al valore LAST dell'array, funziona.
Il motivo è perché '$ scope.bestaand' dovrebbe probabilmente essere un array all'indice della loop per abbinare ogni '$ scope.overlap' – Tomaltach