2014-10-06 8 views
9

मैं बस सोच रहा था कि मुझे वास्तव में सही तरीके से इसका उपयोग करने में सक्षम होने के लिए एक फॉर्म में इनपुट तत्व पर name और ng-model दोनों निर्दिष्ट क्यों करना है। उदाहरण के लिए, निम्नलिखित के साथ:मुझे AngularJS में इनपुट पर नाम और एनजी-मॉडल दोनों निर्दिष्ट करने की आवश्यकता क्यों है?

<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> 

जब मैं एक रेडियो बटन का चयन नहीं करते मैं उत्पादन Invalid! मिलेगा - यह सही व्यवहार है। हालांकि, नकारात्मकता यह है कि मैं इस मॉडल तक पहुंचने का एकमात्र तरीका $scope.toggle के माध्यम से कर सकता हूं - तत्व स्वयं $scope.test (फॉर्म कंटेनर) के अंदर नाम से संदर्भित नहीं होगा। $scope.test में toggle के लिए सत्यापन नियम शामिल हैं, लेकिन आपको यह बताने का कोई तरीका नहीं है कि उन सत्यापन नियम toggle से संबंधित हैं क्योंकि नाम मौजूद नहीं है।

हम इसे चारों ओर इनपुट पर एक नाम विशेषता डाल स्विच करने के लिए थे, तो:

<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> 

तो हमारे ng-switch नीचे हमेशा वैध दिखाई नहीं देगा, भले ही मैं उल्लेख किया है कि इनपुट ही आवश्यक है पर। इसके अलावा, toggle अब $scope.test के अंदर दिखाई देता है, इसलिए मैं $scope.test.toggle की कहीं भी वैधता की जांच कर सकता हूं (उस तत्व पर इनलाइन विशेषता के बिना)।

अगर मैं दोनों दृष्टिकोण गठबंधन और प्रयोग name और ng-model दोनों, तो दोनों परिणामों जोड़ दिया जाता है और मैं परिणाम मैं उम्मीद होता है - मैं देख सकता हूँ $scope.test.toggleऔर मॉडल ही सही ढंग से मान्य है।

मेरा प्रश्न यह उचित व्यवहार क्यों है? यह jquery.validate.unobtrusive कहने के लिए अलग लगता है, जहां name विशेषता वह बिट है जो आंतरिक रूप से तत्व के सत्यापन नियमों से संबंध रखती है।

उत्तर

14

name विशेषता बंधन के लिए कोणीय सत्यापन, ng-model के लिए प्रयोग किया जाता है,

अगर आप कोणीय साथ मान्य करने के लिए नहीं जा रहे हैं यदि आप तो बाध्यकारी नहीं कर रहे हैं name

का उपयोग नहीं करना नहीं है ng-model

दोनों आवश्यक हैं यदि आपको कोणीय के साथ क्लाइंट पक्ष में सत्यापन करने की आवश्यकता है और

बाध्यकारी की आवश्यकता है
संबंधित मुद्दे

 संबंधित मुद्दे