Sadece doğru şekilde kullanabilmek için neden bir giriş öğesinde hem name
hem de ng-model
belirtmek zorunda kaldığını merak ediyordum. Aşağıdaki ile Örneğin :AngularJS'de neden hem giriş hem de ng modeli belirtmem gerekiyor?
<form name='test'>
<div>
<input type='radio'
value='create-new'
ng-model='toggle'
required />
<input type='radio'
value='use-existing'
ng-model='toggle'
required />
</div>
<div ng-switch='test.$invalid'>
<div ng-switch-when='true'>Invalid!</div>
<div ng-switch-when='false'>Valid!</div>
</div>
</form>
Bir radyo düğmesini seçmeyin zaman çıktı Invalid!
alacağı - bu doğru bir davranıştır. Ancak, bu modele erişebilmem için tek yolun $scope.toggle
olması gerekir - elemanın kendisi $scope.test
(form kabı) içindeki adıyla belirtilemez. olacak$scope.test
toggle
için doğrulama kurallarını içeren, ancak bu adı yok olarak bu doğrulama kuralları toggle
ait olduğunu bildiren herhangi bir şekilde yokolacaktır.
biz etrafında girişine bir isim niteliği koymak geçmek olsaydı:
<form name='test'>
<div>
<input type='radio'
value='create-new'
name='toggle'
required />
<input type='radio'
value='use-existing'
name='toggle'
required />
</div>
<div ng-switch='test.$invalid'>
<div ng-switch-when='true'>Invalid!</div>
<div ng-switch-when='false'>Valid!</div>
</div>
</form>
Sonra bizim olacak hep girdi kendisinin gerekli olduğunu söz ettik rağmen geçerlidir göstermek altta ng-switch
. Ayrıca, toggle
şimdi $scope.test
'un içinde görünür, bu yüzden $scope.test.toggle
'un geçerliliğini başka bir yerde (o öğe üzerinde satır içi öznitelik gerektirmeden) kontrol edebilirim.
ben her iki yaklaşımı birleştirmek ve name
ve ng-model
hem sonra hem sonuç birleştirilir kullanmak ve ben umuyordum sonuç alırsanız - Ben $scope.test.toggle
ve modelin kendisi doğru doğrulayarak görebilirsiniz.
Sorum şu: Bu neden uygun davranış? özniteliğinin, doğrulama kurallarını öğeye özdevinimli olarak bağladığı biti olan jquery.validate.unobtrusive
farklı görünüyor.