2014-10-06 19 views
9

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.testtoggle 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.toggleve 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.

cevap

14

name ayrıntının açısal ile doğrulamak için gidiş değildir eğer

Eğer o bağlayıcı değilse name

yok kullanmak zorunda değilsiniz, bağlanma için açısal doğrulama, ng-model için kullanılır Eğer açı ile istemci tarafında doğrulamak gerekir ve

bağlayıcı ihtiyaç halinde her ikisi de gereklidir ng-model

kullanımı

İlgili konular