आवश्यक और गैर-आवश्यक के बीच अंतर क्या है?


जवाबों:


421

एंगुलरजेएस फार्म तत्व requiredसत्यापन कार्यों को करने के लिए विशेषता की तलाश करते हैं। ng-requiredआपको requiredबूलियन टेस्ट के आधार पर विशेषता सेट करने की अनुमति देता है (उदाहरण के लिए, केवल फ़ील्ड बी की आवश्यकता है - कहते हैं, एक छात्र संख्या - यदि फ़ील्ड ए का एक निश्चित मूल्य है - यदि आपने "छात्र" को एक विकल्प के रूप में चुना है )

एक उदाहरण के रूप में, <input required>और <input ng-required="true">अनिवार्य रूप से एक ही चीज हैं

यदि आप सोच रहे हैं कि यह इस तरह से क्यों है, (और सिर्फ बनाने <input required="true">या नहीं <input required="false">), तो यह HTML की सीमाओं के कारण है - requiredविशेषता का कोई संबद्ध मूल्य नहीं है - इसकी मात्र उपस्थिति का अर्थ है (HTML मानकों के अनुसार) कि तत्व की आवश्यकता है - इसलिए कोणीय को आवश्यक मान सेट / अनसेट करने का एक तरीका चाहिए ( required="false"अमान्य HTML होगा)


मैं क्रमशः एनजी-आवश्यक को कैसे हटा सकता हूं? क्योंकि मैं कुछ सफलता के साथ कुछ jquery तरीकों की कोशिश की
hehz

28
मुझे यकीन नहीं है कि मैं प्रश्न को समझता हूं .. व्यवहार में, आप एनजी-आवश्यक = "सही" का उपयोग कभी नहीं करते हैं, बल्कि एनजी-आवश्यक = "स्कोपवेरिबल" या एनजी-आवश्यक = "स्कोप ट्रूथटेस्ट ()", और मूल्य चर / फ़ंक्शन यह निर्धारित करता है कि तत्व की आवश्यकता है या नहीं। एक कोणीय ऐप में इन चीजों के साथ गड़बड़ करने के लिए कभी भी jquery का उपयोग न करें, या आपके पास अप्रत्याशित परिणाम होंगे!
Tiago Roldão

यह उल्लेख के लायक है कि एनजी-आवश्यक एक डिफ़ॉल्ट टूलटिप शैली त्रुटि संदेश को प्रदर्शित करता है जो कहता है कि 'यह फ़ील्ड आवश्यक है', जो हमेशा वांछित नहीं होता है। मैं इसे बंद करने का एक तरीका ढूंढ रहा हूं
एडम स्पेंस

2
यह वास्तव में नहीं है। निश्चित नहीं है, लेकिन मुझे लगता है कि आप जिसका उल्लेख कर रहे हैं वह है html5 सत्यापन, जो कि अधिकांश आधुनिक ब्राउज़रों द्वारा स्वचालित रूप से विकृत है। यदि आप इस पर नियंत्रण रखना चाहते हैं (ब्राउज़र क्या करता है यह अक्षम करते हुए) आप विशेषता novalidate जोड़ सकते हैं <form method="post" action="/foo" novalidate>:। फिर, यह एक html5 विशेषता है, जो कोणीयजेएस से संबंधित नहीं है।
टिआगो रोल्डो

मुझे उम्मीद होगी कि जब ng-requiredकोई गुंजाइश / नियंत्रक चर की ओर इशारा करता है, तो कोणीय परिवर्तन के लिए इसकी निगरानी करता है और तदनुसार आवश्यक विशेषता निर्धारित करता है। जबकि साधारण HTML requiredविशेषता के मामले में आपके पास उस तरह का लचीलापन नहीं है। नहीं? और जब हम एक ही विषय पर हों, तो किस बारे में ng-attr-required? क्या यह बिल्कुल वैसा ही है ng-required?
AsGoodAsItGets 15

78

मैं टियागो के जवाब के लिए एक addon बनाना चाहते हैं :

मान लें कि आप तत्व का उपयोग कर छिपा रहे हैं ng-showऔर requiredउसी पर एक विशेषता जोड़ रहे हैं :

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

कुछ इस तरह एक त्रुटि फेंक देंगे:

नाम = '' के साथ एक अमान्य फ़ॉर्म नियंत्रण ध्यान देने योग्य नहीं है

ऐसा इसलिए है क्योंकि आप केवल तत्वों requiredपर सत्यापन नहीं कर सकते hiddenहैं। इसका उपयोग ng-requiredकरने से सशर्त रूप से आवश्यक मान्यता लागू करना आसान हो जाता है जो कि बहुत ही बढ़िया है !!


13
निश्चित रूप से एक अच्छा सुझाव है, और आप उस संभावित मुद्दे को दरकिनार करने के लिए / के ng-ifबजाय उपयोग कर सकते हैं । ng-showng-hide
jkjustjoshing

1
यह स्वीकृत उत्तर होना चाहिए। यदि आपके पास छिपे हुए तत्व हैं (एनजी-शो = "गलत"), इस उत्तर में वर्णित अनुसार एनजी-आवश्यक = "सही" और बस 'आवश्यक' के बीच अंतर है, और हम इस अंतर के कारण गर्म पानी में मिल गए।
इवान क्रिव्याकोव

17

एचटीएमएल विशेषता required="required" एक बयान ब्राउज़र है कि इस क्षेत्र को मान्य होने के लिए फार्म के लिए लिए यह आवश्यक है कह रही है। ( required="required"एक्सएचटीएमएल फॉर्म है, बस उपयोग requiredकरना समकक्ष है)

कोणीय विशेषता ng-required="yourCondition" का अर्थ है 'isRequired (yourCondition)' और HTML विशेषता सेट गतिशील आप अपनी हालत पर निर्भर करता है के लिए।

यह भी ध्यान दें कि HTML संस्करण भ्रामक है , जैसे कुछ सशर्त लिखना संभव नहीं है required="true"या required="false", केवल विशेषता मामलों की उपस्थिति (वर्तमान का अर्थ है सच)! यह वह जगह है जहाँ कोणीय आपकी मदद करता है ng-required


हाँ दुख की बात है कि ब्राउज़र सही / गलत नहीं डालता, शायद बहुत तकनीकी माना जाता है ...
Christophe Roussy
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.