क्या अंतर हैं ng-pristineऔर ng-dirty? ऐसा लगता है कि आप दोनों हो सकते हैं true:
$scope.myForm.$pristine = true; // after editing the form
क्या अंतर हैं ng-pristineऔर ng-dirty? ऐसा लगता है कि आप दोनों हो सकते हैं true:
$scope.myForm.$pristine = true; // after editing the form
जवाबों:
ng-dirtyवर्ग आपको बताता है कि फार्म, उपयोगकर्ता द्वारा संशोधित किया गया है, जबकि ng-pristineवर्ग आपको बताता है कि प्रपत्र उपयोगकर्ता द्वारा संशोधित नहीं किया गया है। तो ng-dirtyऔर ng-pristineएक ही कहानी के दो पहलू हैं।
कक्षाएं किसी भी क्षेत्र पर सेट की जाती हैं, जबकि फॉर्म में दो गुण होते हैं, $dirtyऔर $pristine।
आप $scope.form.$setPristine()फ़ंक्शन का उपयोग प्राचीन राज्य में फ़ॉर्म को रीसेट करने के लिए कर सकते हैं (कृपया ध्यान दें कि यह एक AngularJS 1.1.x सुविधा है)।
यदि आप $scope.form.$setPristine()AngularJS की 1.0.x शाखा में भी -ish व्यवहार चाहते हैं , तो आपको अपने स्वयं के समाधान को रोल करने की आवश्यकता है (कुछ सुंदर अच्छे यहां मिल सकते हैं )। मूल रूप से, इसका मतलब है सभी प्रकार के क्षेत्रों पर पुनरावृत्ति करना और अपना $dirtyझंडा लगाना false।
उम्मीद है की यह मदद करेगा।
अगर कोई फ़ील्ड अभी भी कुंवारी है, तो गंदा हमें बताता है और अगर उपयोगकर्ता पहले से संबंधित क्षेत्र में कुछ भी टाइप करता है, तो गंदा हमें बताता है:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
<form ng-app="" name="myForm">
<input name="email" ng-model="data.email">
<div class="info" ng-show="myForm.email.$pristine">
Email is virgine.
</div>
<div class="error" ng-show="myForm.email.$dirty">
E-mail is dirty
</div>
</form>
एक ऐसा क्षेत्र जिसने एक एकल कीडाउन घटना को फिर से प्राप्त किया है, वह कोई कुंवारी (कोई और अधिक प्राचीन) नहीं है और इसलिए हमेशा के लिए गंदा है।
दोनों निर्देश स्पष्ट रूप से एक ही उद्देश्य की सेवा करते हैं, और हालांकि ऐसा लगता है कि दोनों को शामिल करने के लिए कोणीय टीम के निर्णय में DRY सिद्धांत के साथ हस्तक्षेप होता है और पृष्ठ के पेलोड में जुड़ जाता है, फिर भी उन दोनों के पास होना व्यावहारिक है। आपके इनपुट तत्वों को स्टाइल करना आसान है क्योंकि आपके पास दोनों .ng-pristine और .ng- गंदे आपके css फ़ाइलों में स्टाइल के लिए उपलब्ध हैं। मुझे लगता है कि यह दोनों निर्देशों को जोड़ने का प्राथमिक कारण था।
.ng-pristineऔर .ng-dirtyअलग सीएसएस स्टाइल की अनुमति दें - यह पुनरावृत्ति के पीछे सबसे सही कारण लगता है
जैसा कि पहले ही उत्तर में कहा गया है, ng-pristineयह इंगित करने के लिए है कि फ़ील्ड को संशोधित नहीं किया गया है, जबकिng-dirty यह बताने के लिए कि इसे संशोधित किया गया है। दोनों की आवश्यकता क्यों है?
मान लें कि हमें खेतों के बीच फोन और ई-मेल पते के साथ एक फॉर्म मिला है। या तो फोन या ई-मेल की आवश्यकता है, और आपको प्रत्येक क्षेत्र में अमान्य डेटा प्राप्त होने पर उपयोगकर्ता को सूचित करना होगा। इसका उपयोग करके ng-dirtyऔर ng-pristineएक साथ पूरा किया जा सकता है :
<form name="myForm">
<input name="email" ng-model="data.email" ng-required="!data.phone">
<div class="error"
ng-show="myForm.email.$invalid &&
myForm.email.$pristine &&
myForm.phone.$pristine">Phone or e-mail required</div>
<div class="error"
ng-show="myForm.email.$invalid && myForm.email.$dirty">
E-mail is invalid
</div>
<input name="phone" ng-model="data.phone" ng-required="!data.email">
<div class="error"
ng-show="myForm.phone.$invalid &&
myForm.email.$pristine &&
myForm.phone.$pristine">Phone or e-mail required</div>
<div class="error"
ng-show="myForm.phone.$invalid && myForm.phone.$dirty">
Phone is invalid
</div>
</form>
एनजी-प्राचीन ($ प्राचीन)
बूलियन सच है अगर फॉर्म / इनपुट अभी तक उपयोग नहीं किया गया है ( उपयोगकर्ता द्वारा संशोधित नहीं किया गया है )
गैर-गंदा ($ गंदा)
बूलियन सच है अगर फॉर्म / इनपुट का उपयोग किया गया है ( उपयोगकर्ता द्वारा संशोधित )
$ SetDirty (); प्रपत्र को गंदे अवस्था में सेट करता है। इस पद्धति को 'एनजी-डर्टी' वर्ग को जोड़ने और एक गंदे राज्य (एनजी-डर्टी क्लास) के रूप में सेट करने के लिए कहा जा सकता है। यह विधि वर्तमान स्थिति को मूल रूपों में प्रचारित करेगी।
$ SetPristine (); प्रपत्र को अपनी प्राचीन अवस्था में सेट करता है। यह विधि प्रपत्र की $ प्राचीन अवस्था को सत्य, $ को गंदे अवस्था को असत्य, गंदे-गंदे वर्ग को हटाती है और एनजी-प्रिस्टाइन वर्ग को जोड़ देती है। इसके अतिरिक्त, यह $ सबमिट की गई अवस्था को झूठी पर सेट करता है। यह विधि इस रूप में निहित सभी नियंत्रणों को भी प्रचारित करेगी।
जब हम इसे सहेजने या रीसेट करने के बाद किसी प्रपत्र का पुन: उपयोग करना चाहते हैं, तो किसी प्रपत्र को वापस प्राचीन अवस्था में सेट करना उपयोगी होता है।