olduğu gibi yinelenen bir işaret varsa, kullanıcının ng-repeat tarafından oluşturulan metin alanlarına girdi girmesi gereken bir durum var. Kullanıcı önceden girilmiş bir değeri girerse, hem yeni hem de var olan değerler false olarak doğrulanmalıdır. Değerlerden biri (mevcut veya yeni) değişirse, doğrulama buna uygun olarak güncellenmelidir.Angularjs - Eşsiz girişler nasıl kontrol edilir ve eğer geçersiz
Oldukça çeşitli seçenekler denedim, şu anda bu yaklaşıyor, ama hala% 100 değil.
HTML:
<body ng-app="ap" ng-controller="con">
<table>
<tr>
<td>name</td>
</tr>
<tr ng-repeat="person in persons">
<td>
<ng-form name="personForm">
<div ng-class="{ 'has-error' :
personForm.personName.$invalid }">
<input type='text'
name="personName"
ng-class="empty"
ng-model="person.name"
ng-change="verifyDuplicate(this, person)"/>
</div>
</ng-form>
</td>
</tr>
</table>
JavaScript: Bu herhangi bir Yardım mutluluk duyacağız
var app = angular.module("ap",[]);
app.controller("con",function($scope){
$scope.persons = [
{name: 'a'},
{name: 'b'},
{name: 'c'}
];
$scope.empty = "normal";
$scope.verifyDuplicate = function(domScope, object){
for(var i = 0; i < $scope.persons.length; i++) {
if($scope.persons[i].name === object.name && $scope.persons[i] !== object) {
domScope.personForm.personName.$setValidity('duplicate',false);
}
else {
domScope.personForm.personName.$setValidity('duplicate',true);
}
}
};
});
. İşte
keman Fiddle of code
Büyük, bunu verecek bir ben, bir boşluk bulmak gerçek çalışır umut en kısa sürede gitmek Dünya sorununa uygulamak istiyorum. – avn
Harika çalışıyor, yardım için teşekkürler. – avn
@ dapeng-li Bu benim için çalıştı, ancak birim testi için iyi değil. Bu özel doğrulama direktifine dönüştürülebilir mi? –