変数を配列と比較すると、forループを使用した後にifステートメントを持つ$scope.object.id
と$scope.groepen.id
が表示されます。 $scope.object.id
が$scope.groepen.id
のIDのいずれかとまったく同じ場合は、$scope.overlap
のインデックスをtrueにする必要があります。配列をループすると正しい結果が返されない
$scope.overlap
のいずれかがtrueであるかどうかを確認するために別のものを使用しています。 $scope.overlap
のいずれかの要素がtrueの場合、$scope.bestaand
がtrueになります。そうでなければ、それは間違っているはずです。
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;
}
}
マイコンソールログは$scope.overlap
が実際に正しい値を(何も同じではありませんので、もし、すべてのインデックスが偽である)を示していていることを私に示しています。 $scope.bestaand
は、何かが同じであればtrueになりますが、falseには戻っていません。
私はチェックはここに示す作業されているかどうかを示すために、角度フォーム検証を使用しています:私はここで間違って
<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>
何をしているのですか?
編集:
私はif文の場所を変更しました。私は、同じ値の入力を持っている(
真になるんようだが、それは上書きされます:
for (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")
}
}
コンソールログは、この私を示しています。更新されたコードは、ここに示されています配列の2番目の値)。配列の最後の値と同じ値を入力した場合、それは機能します。
の$ scope.bestaand'は、おそらくのインデックスで配列する必要があります 'ので、ある理由で
bastaan = false
を設定していない、真でありますそれぞれの '$ scope.overlap'にマッチするループ。 – Tomaltach