2016-04-11 22 views
0

'u seçer Kişileri eklemek için bir yönerge hazırlıyorum. İhtiyaç, sayıları ve daha sonra kişilerin yaş ve cinsiyetini ayarlamak olmuştur. Bu yüzden benim direktifimin seçime göre açılan menüleri vardır. Kişi sayısını ayarlamak için ilk 0 ila 10. Bu değişiklik olduğunda, bir diziye kişi nesneleri ekleyen $ watch'ım var. Benim html-görünümündeDinamik olarak eklenen Angularjs doğrulaması,

$scope.$watch('selectedAntal', function(newValue, oldValue) { 
 
    if (!newValue) { 
 
    return; 
 
    } 
 

 
    for (var i = $scope.anonymousPersons.length; i < newValue; i++) { 
 
    $scope.anonymousPersons.push({ 
 
     gender: 0, 
 
     birthYear: -1 
 
    }); 
 
    } 
 

 
    updateNumber($scope, newValue, 10); 
 
});
Ben cinsiyet seçme-Dropdowns ve birthYear için ng tekrarı var.

<label for="numberOf_{{name}}">Choose number of persons</label> 
 

 
<select name="numberOf_{{name}}" ng-model="selectedAntal" ng-options="x for x in antal" ng-required="true"> 
 
    <!--<option value="" default style="display: none;">Choose</option>--> 
 
</select> 
 

 
<table class="table"> 
 
    <thead> 
 
     <tr> 
 
      <th>Gender</th> 
 
      <th>Birth year</th> 
 
     </tr> 
 
    </thead> 
 
    <tbody> 
 
     <tr ng-repeat="person in anonymousPersons"> 
 
      <td> 
 
       <select name="{{name}}_{{$index}}_gender" ng-model="person.gender" ng-options="x.text for x in genders" required > 
 
        <option value="" default style="display: none;">Choose</option> 
 
       </select> 
 
      </td> 
 
      <td> 
 
       <select name="{{name}}_{{$index}}_birthYear" ng-model="person.birthYear" ng-options="x for x in years" required > 
 
        <option value="" default style="display: none;">Choose</option> 
 
       </select> 
 
      </td> 
 
      <td> 
 
       {{person|json}} 
 
      </td> 
 
      <td><button ng-click="remove(person)">Remove</button></td> 
 
     </tr> 
 
    </tbody> 
 
</table>

Tüm doğrulama dışında çalışıyor. Cinsiyet ve birthYear için seçimlerin her ikisi de gerekli sete sahiptir.

Ancak doğrulama çalışmaz.

Tahminimce Açısal, yeni oluşturulan alanlar hakkında hiçbir şey bilmiyor, ama kirli alan çalışıyor.

El ile doğrulama işlemini doğrulamak için bunu nasıl ekleyebilirim?

I have now made an example on plnkr that demonstrates the problem.

+0

Validate() işlevinde ne yazılır? – Pavan

+0

Gerekli olan dinamik olarak oluşturulmuş alanlar için iyi çalışmalıdır. Doğrulamadaki $ geçersiz bayrağı kontrol ediyor musunuz? – carlcheel

+0

@Pavan ng-change = "validate()", bunu elle yapma girişiminden geri kalan bir şeydi. Onu kaldırmayı çoktan özledim. – Aronsson

cevap

0

doğrulama çalışır, ancak sorun bazı değerlerle belirli modellerde başlatılamadığı olmasıdır. Bu durumda 'talep' çözüldü. Eğer ng-modelini sıfır ile başlatırsanız, sorun olmaz.

İlgili konular