Required ve ng-required arasındaki fark nedir?


Yanıtlar:


421

AngularJS form öğeleri, requireddoğrulama işlevlerini gerçekleştirme özniteliğini arar . özelliği bir boole testine bağlı olarak ng-requiredayarlamanıza olanak tanır required(örneğin, yalnızca B alanını zorunlu kılın - örneğin, bir öğrenci numarası - A alanının belirli bir değeri varsa - "öğrenci" yi bir seçim olarak seçtiyseniz )

Örnek olarak <input required>ve <input ng-required="true">aslında aynı şey

Bunun neden böyle olduğunu merak ediyorsanız (ve sadece <input required="true">veya değil <input required="false">), bunun nedeni HTML sınırlamalarından kaynaklanmaktadır - requiredniteliğin ilişkili bir değeri yoktur - yalnızca varlığı, öğenin gerekli olduğu anlamına gelir (HTML standartlarına göre) - bu yüzden açısal gerekli değeri ayarlamak / ayarlamak için bir yola ihtiyaç duyar ( required="false"geçersiz HTML olur)


Sırasıyla gerekli olanı nasıl çıkarabilirim? Çünkü başarı olmadan bazı jquery yöntemlerini denedim
themhz

28
Soruyu anladığımdan emin değilim .. Uygulamada, ng-required = "true" kullanmıyorsunuz, bunun yerine ng-required = "scopedVariable" veya ng-required = "scopeTruthTest ()" ve değişken / işlev, öğenin gerekli olup olmadığını belirler. Açısal bir uygulamada bu şeylerle uğraşmak için asla jquery kullanmayın, aksi takdirde öngörülemeyen sonuçlar elde edersiniz!
Tiago Roldão

Ng-required olduğunu belirtmek gerekir, her zaman istenmeyen 'bu alan gereklidir' diyen varsayılan bir araç ipucu stili hata mesajı görüntüler. Kapatmak için bir yol arıyorum
Adam Spence

2
Gerçekten değil. Emin değilim, ama bahsettiğiniz şey, çoğu modern tarayıcı tarafından otomatik olarak hazırlanan html5 doğrulamasıdır. Bunu kontrol etmek istiyorsanız (tarayıcının yaptığı şeyi devre dışı bırakmak) novalidate: özelliğini ekleyebilirsiniz <form method="post" action="/foo" novalidate>. Yine bu, açısalJS ile ilgili olmayan bir html5 özniteliğidir.
Tiago Roldão

Ben ng-requiredbir kapsam / denetleyici değişken işaret ettiğinde , açısal bunu değişiklikler için izler ve gerekli özniteliği buna göre ayarlar. Basit HTML requiredözelliği söz konusu olduğunda bu tür bir esnekliğe sahip değilsiniz. Hayır? Ve biz aynı konuyla ilgili olarak, ne olacak ng-attr-required? Tam olarak aynı ng-requiredmı?
AsGoodAsIt,

78

Ben tiago cevabı için bir addon yapmak istiyorum :

Diyelim ki öğeyi aynı özelliği kullanarak ng-showve ekleyerek requiredgizlediniz:

<div ng-show="false">
    <input required name="something" ng-model="name"/>
</div>

aşağıdaki gibi bir hata verir:

Name = '' ile geçersiz bir form denetimi odaklanamıyor

Bunun nedeni required, hiddenöğelere doğrulama uygulayamamanızdır . Kullanmak şartlı olarak sadece gerekli olan gerekli doğrulama uygulamayıng-required kolaylaştırır !!


13
Kesinlikle iyi bir ipucu ve potansiyel sorunu azaltmak için / ng-ifyerine kullanabilirsiniz . ng-showng-hide
jkjustjoshing

1
Bu kabul edilen cevap olmalı. Gizli öğeleriniz varsa (ng-show = "false"), ng-required = "true" ile sadece "zorunlu" arasında bir fark vardır ve bu cevapta açıklandığı gibi sıcak suya girdik.
Ivan Krivyakov

17

HTML özelliği required="required" bu alan geçerli olabilmesi için form için gereklidir söz konusu tarayıcıyı anlatan bir ifadedir. ( required="required"XHTML formudur, sadece kullanmak requiredeşdeğerdir)

Eğik nitelik ng-required="yourCondition" demektir 'isRequired (yourCondition)' ve HTML niteliğini belirler dinamik size durumuna bağlı için.

Ayrıca unutmayın HTML sürümü kafa karıştırıcı , öyle değil yazma gibi bir şey Koşullu olarak mümkün required="true"veya required="false"nitelik konularda, sadece varlığı (şimdiki araçlar true)! Angular size bu konuda yardımcı oluyorng-required .


Evet ne yazık ki tarayıcı doğru / yanlış koymak için izin vermez, muhtemelen çok teknik olarak kabul edilir ...
Christophe Roussy
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.