অ্যাঙ্গুলারজেএস-এ, এনজি-প্রাইস্টাইন এবং এনজি-ময়লা মধ্যে পার্থক্য কী?


109

ng-pristineএবং মধ্যে পার্থক্য কি ng-dirty? মনে হচ্ছে আপনার উভয়টি থাকতে পারে true:

$scope.myForm.$pristine = true; // after editing the form

উত্তর:


214

ng-dirtyবর্গ জানায় যে ফর্ম, ব্যবহারকারী দ্বারা পরিবর্তন করা হয়েছে যেহেতু ng-pristineবর্গ আপনি বলে যে ফর্ম ব্যবহারকারীর দ্বারা পরিবর্তন করা হয় নি। সুতরাং ng-dirtyএবং ng-pristineএকই গল্পের দুটি দিক।

ক্লাসগুলি যে কোনও ক্ষেত্রে সেট করা আছে, যখন ফর্মটির দুটি বৈশিষ্ট্য রয়েছে $dirtyএবং $pristine

আপনি $scope.form.$setPristine()একটি ফর্মটি মূল অবস্থাতে পুনরায় সেট করতে ফাংশনটি ব্যবহার করতে পারেন (দয়া করে নোট করুন এটি একটি AngularJS 1.1.x বৈশিষ্ট্য)।

আপনি যদি $scope.form.$setPristine()AngularJS এর ​​1.0.x শাখায়ও আইশ আচরণ করতে চান তবে আপনার নিজের সমাধানটি রোল করা দরকার (কিছু সুন্দর ভাল জিনিস এখানে পাওয়া যাবে )। মূলত, এর অর্থ সমস্ত ফর্ম ক্ষেত্রগুলিতে পুনরাবৃত্তি করা এবং তাদের $dirtyপতাকা সেট করা false

আশাকরি এটা সাহায্য করবে.


2
ভাল উত্তর, তবে 2 শ্রেণি কেন, যদি তারা একই গল্পের দুটি দিক হয়? আমি যেমন বলেছি, আপনার সত্য বা মিথ্যা উভয়ই থাকতে পারে।
সিনারজেটিক

6
এটা ঠিক, তবে আমার ধারণা (ভয়) যে এটি একটি প্রশ্ন যা কেবল অ্যাঙ্গুলারজেএস ডেভেলই উত্তর দিতে পারে। অন্য কথায়: আমি জানি না।
গোলো রোডেন

2
@ সাইনারজেটিক এটি এনজি-শো এবং এনজি-হাইডের মত মূলত, একটি যথেষ্ট তবে আমাদের কাছে কোনও দৃশ্যমান কারণ নেই
লাবীব

1
@ সাইনারজিটিক এনজি-শো বোঝার জন্য শব্দার্থগতভাবে আরও সহজ, এবং এটি এনজি-হাইডের চেয়ে বোঝার জন্য আরও একটি কম জ্ঞানীয় পদক্ষেপ প্রয়োজন requires আপনার মস্তিষ্ককে সেই অতিরিক্ত পদক্ষেপটি করা দরকার এবং এর ফলে আপনি বাগগুলি প্রবর্তন করার বেশি সম্ভাবনা
দামিয়ান গ্রীন

4
আমি মনে করি এটি আপনার অভিপ্রায় নির্ভর করে: কখনও কখনও, আপনি একটি নির্দিষ্ট পরিস্থিতি প্রদান করে অতিরিক্ত জিনিস দেখাতে চান এবং কখনও কখনও আপনাকে নির্দিষ্ট পরিস্থিতিতে কিছু জিনিস লুকিয়ে রাখতে হবে । আপনার ব্যবহারের ক্ষেত্রে উপর নির্ভর করে উভয়ই উপযুক্ত হতে পারে। অবশ্যই, যদিও এটি প্রযুক্তিগতভাবে একই রকম, ইচ্ছাকৃতভাবে তা নয়।
গোলো রডেন

41

মূল ক্ষেত্রটি এখনও ভার্জিন কিনা তা আমাদের জানিয়ে দেয় এবং ব্যবহারকারী ইতিমধ্যে সম্পর্কিত ক্ষেত্রে কিছু টাইপ করেছে কিনা তা নোংরা আমাদের বলে:

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

যে ক্ষেত্রটি একটি একক কীডাউন ইভেন্টটি নিবন্ধভুক্ত করেছে সেগুলি আর ভার্জিন নয় (আর কোনও প্রাচীন নেই) এবং তাই চিরতরে নোংরা।


মাউসটি দিয়ে কীভাবে আটকানো যায়?
মিহাই রুরাকানু

2
এটি কিছুই ব্যাখ্যা করে না। প্রশ্ন ছিল 'পার্থক্য কী'। কুমারী বলতে কী বোঝাতে চেয়েছি এবং নোংরা বলতে কী বোঝায় তার কোনও ব্যাখ্যা নেই।
হোগান

34

উভয় নির্দেশাবলী স্পষ্টতই একই উদ্দেশ্যে কাজ করে, এবং যদিও মনে হয় যে কৌণিক দলের সিদ্ধান্তকে উভয়ই ডিআরওয়াই নীতিতে হস্তক্ষেপ করে এবং পৃষ্ঠার পেডলোডকে যুক্ত করে, তবে এখনও উভয়কেই কাছাকাছি রাখাই বরং ব্যবহারিক। আপনার সিএসএস ফাইলে স্টাইলিংয়ের জন্য .ng-pristine এবং .ng-নোংরা দুটোই থাকায় আপনার ইনপুট উপাদানগুলিকে স্টাইল করা সহজ। আমার ধারণা, উভয় নির্দেশিকা যুক্ত করার এটিই প্রাথমিক কারণ ছিল।


19
সত্যের জন্য +1 .ng-pristineএবং .ng-dirtyবিভিন্ন CSS স্টাইলিংকে অনুমতি দিন - এটি খ্যাতির পিছনে সবচেয়ে সঠিক কারণ বলে মনে হচ্ছে
স্টিভ লরিমার

10

পূর্বের উত্তরে যেমন ইতিমধ্যে বলা হয়েছে, 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>

1

এনজি-প্রাইস্টাইন ($ প্রিন্টিন)

বুলিয়ান ট্রু যদি ফর্ম / ইনপুটটি এখনও ব্যবহার না করা হয় ( ব্যবহারকারীর দ্বারা পরিবর্তিত হয়নি )

এনজি-নোংরা ($ নোংরা)

ফর্ম / ইনপুট ব্যবহার করা হয়েছে ( ব্যবহারকারী দ্বারা সংশোধিত ) বুলিয়ান সত্য


$ setDirty (); একটি নোংরা অবস্থায় ফর্ম সেট করে। এই পদ্ধতিটি 'এনজি-নোংরা' শ্রেণি যোগ করতে এবং ফর্মটিকে একটি নোংরা অবস্থায় (এনজি-নোংরা শ্রেণি) সেট করতে বলা যেতে পারে। এই পদ্ধতিটি প্যারেন্ট ফর্মগুলিতে বর্তমান অবস্থার প্রচার করবে।

$ setPristine (); ফর্মটিকে তার প্রাথমিক অবস্থায় সেট করে। এই পদ্ধতিটি ফর্মের $ আদিম অবস্থাকে সত্য হিসাবে নির্ধারণ করে, $ নোংরা অবস্থা মিথ্যাতে, এনজি-নোংরা শ্রেণিকে সরিয়ে দেয় এবং এনজি-আদিম শ্রেণি যুক্ত করে। অতিরিক্তভাবে, এটি $ জমা দেওয়া স্থিতিকে মিথ্যা হিসাবে সেট করে। এই পদ্ধতিটি এই ফর্মটিতে থাকা সমস্ত নিয়ন্ত্রণেও প্রচার করবে।

কোনও ফর্মটিকে সংরক্ষণের পরে পুনরায় সেট করার পরে 'পুনঃব্যবহার' করতে চাইলে প্রায়শই একটি প্রাথমিক অবস্থানে ফর্ম সেট করা প্রায়শই কার্যকর।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.