ความแตกต่างระหว่างrequiredและng-required(การตรวจสอบแบบฟอร์ม) คืออะไร?
ความแตกต่างระหว่างrequiredและng-required(การตรวจสอบแบบฟอร์ม) คืออะไร?
คำตอบ:
องค์ประกอบแบบฟอร์ม AngularJS ค้นหาrequiredคุณลักษณะเพื่อดำเนินการฟังก์ชันการตรวจสอบความถูกต้อง ng-requiredอนุญาตให้คุณตั้งค่าแอrequiredททริบิวต์โดยขึ้นอยู่กับการทดสอบบูลีน (ตัวอย่างเช่นต้องการเฉพาะฟิลด์ B - พูด, หมายเลขนักเรียน - หากฟิลด์ A มีค่าบางค่า - หากคุณเลือก "นักเรียน" เป็นตัวเลือก )
เป็นตัวอย่าง<input required>และ<input ng-required="true">เป็นสิ่งเดียวกัน
หากคุณสงสัยว่าทำไมจึงเป็นเช่นนี้ (และไม่ใช่แค่สร้าง<input required="true">หรือ<input required="false">) มันเกิดจากข้อ จำกัด ของ HTML - requiredแอตทริบิวต์ไม่มีค่าที่เกี่ยวข้อง - การมีอยู่ของมันหมายถึง (ตามมาตรฐาน HTML) ที่องค์ประกอบนั้นจำเป็นต้องมี - ดังนั้นเชิงมุมต้องการวิธีตั้งค่า / ยกเลิกค่าที่ต้องการ ( required="false"เป็น HTML ที่ไม่ถูกต้อง)
<form method="post" action="/foo" novalidate>แอตทริบิวต์: นี่เป็นแอตทริบิวต์ html5 ซึ่งไม่เกี่ยวข้องกับ angularJS
ng-requiredชี้ไปที่ตัวแปรขอบเขต / ตัวควบคุมแองกูลาร์จะตรวจสอบการเปลี่ยนแปลงและตั้งค่าแอตทริบิวต์ที่จำเป็นตามลำดับ ในขณะที่ในกรณีของrequiredคุณลักษณะHTML อย่างง่ายคุณไม่มีความยืดหยุ่นเช่นนั้น ไม่มี? และในขณะที่เรากำลังในหัวข้อเดียวกันสิ่งที่เกี่ยวกับng-attr-required? มันเหมือนกับng-requiredหรือไม่
ฉันต้องการที่จะทำ addon สำหรับคำตอบของ tiago :
สมมติว่าคุณซ่อนองค์ประกอบโดยใช้ng-showและเพิ่มrequiredแอตทริบิวต์ในรายการเดียวกัน:
<div ng-show="false">
<input required name="something" ng-model="name"/>
</div>
จะโยนข้อผิดพลาดบางอย่างเช่น:
การควบคุมฟอร์มไม่ถูกต้องพร้อมชื่อ = '' ไม่สามารถโฟกัสได้
นี่เป็นเพราะคุณไม่สามารถกำหนดค่าrequiredการตรวจสอบความถูกต้องกับhiddenองค์ประกอบได้ ใช้ng-requiredทำให้ง่ายต่อการตามเงื่อนไขนำไปใช้ตรวจสอบความถูกต้องซึ่งจะน่ากลัวเพียง !!
ng-ifแทนng-show/ ng-hideเพื่อก้าวเท้าเลี่ยงปัญหาที่อาจเกิดขึ้นได้
แอตทริบิวต์ HTML required="required"เป็นคำสั่งที่บอกเบราว์เซอร์ที่ข้อมูลนี้เป็นสิ่งจำเป็นเพื่อให้รูปแบบที่ถูกต้อง ( required="required"เป็นรูปแบบ XHTML เพียงใช้requiredเทียบเท่า)
เชิงมุมแอตทริบิวต์ ng-required="yourCondition"หมายถึง 'isrequired (yourCondition)' และชุดแอตทริบิวต์ของ HTML แบบไดนามิกสำหรับคุณขึ้นอยู่กับสภาพของคุณ
โปรดทราบว่าเวอร์ชัน HTML กำลังสับสนคุณไม่สามารถเขียนสิ่งที่มีเงื่อนไขเช่นเดียวกับrequired="true"หรือrequired="false"มีเพียงแอตทริบิวต์ที่ปรากฏเท่านั้น (ปัจจุบันหมายถึงจริง)! ng-requiredนี่คือที่เชิงมุมจะช่วยให้คุณออกด้วย