অ্যাঙ্গুলারজেএস এটি বুঝতে কীভাবে কাজ করে সে সম্পর্কে আপনাকে সচেতন হওয়া দরকার।
ডাইজেস্ট চক্র এবং $ সুযোগ
প্রথম এবং সর্বাগ্রে, AngularJS তথাকথিত ডাইজেস্ট চক্রের একটি ধারণা সংজ্ঞায়িত করে । এই চক্রটিকে একটি লুপ হিসাবে বিবেচনা করা যেতে পারে, সেই সময়কালে AngularJS চেক করে যে সমস্ত এস দ্বারা দেখা সমস্ত ভেরিয়েবলের কোনও পরিবর্তন আছে কিনা $scope। সুতরাং আপনি যদি $scope.myVarনিজের কন্ট্রোলারে সংজ্ঞায়িত করে থাকেন এবং এই পরিবর্তনশীলটি দেখার জন্য চিহ্নিত করা হয় , তবে আপনি স্পষ্টভাবে AngularJS কে myVarলুপের প্রতিটি পুনরাবৃত্তির পরিবর্তনগুলি নিরীক্ষণ করতে বলছেন ।
একটি প্রাকৃতিক ফলোআপ প্রশ্ন হবে: সবকিছু $scopeদেখার সাথে যুক্ত কি ? ভাগ্যক্রমে, না। আপনি যদি আপনার প্রতিটি বস্তুর পরিবর্তনের জন্য নজর $scopeরাখেন, তবে দ্রুত ডাইজেস্ট লুপটি মূল্যায়ন করতে কয়েক বছর সময় নেয় এবং আপনি দ্রুত পারফরম্যান্স সংক্রান্ত সমস্যার সমাধান করতে পারেন। এ কারণেই অ্যাংুলারজেএস টিম আমাদেরকে কিছু $scopeপরিবর্তনশীল দেখা হওয়ার হিসাবে ঘোষণা করার দুটি উপায় দিয়েছে (নীচে পড়ুন)।
$ ঘড়ি স্কোপ পরিবর্তনের জন্য শুনতে সহায়তা করে
$scopeভেরিয়েবলকে দেখা হিসাবে ঘোষণার দুটি উপায় রয়েছে ।
- এটি আপনার টেম্পলেটে প্রকাশের মাধ্যমে ব্যবহার করে
<span>{{myVar}}</span>
$watchপরিষেবার মাধ্যমে ম্যানুয়ালি এটি যুক্ত করে
বিজ্ঞাপন 1) এটি সর্বাধিক সাধারণ পরিস্থিতি এবং আমি নিশ্চিত যে আপনি এটি আগে দেখেছেন তবে আপনি জানেন না যে এটি পটভূমিতে একটি ঘড়ি তৈরি করেছে। হ্যাঁ, এটা ছিল! অ্যাঙ্গুলারজেএস নির্দেশিকা (যেমন ng-repeat) ব্যবহার করাও অন্তর্নিহিত ঘড়ি তৈরি করতে পারে।
বিজ্ঞাপন 2) এভাবে আপনি নিজের ঘড়ি তৈরি করেন । $watchপরিষেবাটি আপনাকে কিছু কোড চালাতে সহায়তা করে যখন এর সাথে যুক্ত কিছু মান $scopeপরিবর্তিত হয়। এটি খুব কম ব্যবহৃত হয়, তবে কখনও কখনও সহায়ক হয় is উদাহরণস্বরূপ, আপনি যদি প্রতিটিবার 'মাইভার' পরিবর্তন করে কিছু কোড চালাতে চান তবে আপনি নিম্নলিখিতটি করতে পারেন:
function MyController($scope) {
$scope.myVar = 1;
$scope.$watch('myVar', function() {
alert('hey, myVar has changed!');
});
$scope.buttonClicked = function() {
$scope.myVar = 2; // This will trigger $watch expression to kick in
};
}
$ প্রয়োগ ডাইজেস্ট চক্রের সাথে পরিবর্তনগুলি সংহত করতে সক্ষম করে
আপনি $applyএকীকরণ প্রক্রিয়া হিসাবে ফাংশনটি ভাবতে পারেন । আপনি দেখুন, প্রতিবার যখন আপনি সরাসরি বস্তুর সাথে সংযুক্ত$scope কিছু দেখা ভেরিয়েবল পরিবর্তন করেন , AngularJS জানতে পারবে যে পরিবর্তনটি ঘটেছে। এটি কারণ AngularJS ইতিমধ্যে এই পরিবর্তনগুলি নিরীক্ষণ করতে জানত। সুতরাং যদি এটি ফ্রেমওয়ার্ক দ্বারা পরিচালিত কোডে ঘটে তবে ডাইজেস্ট চক্রটি চালিয়ে যাবে।
যাইহোক, কখনও কখনও আপনি AngularJS বিশ্বের বাইরে কিছু মান পরিবর্তন করতে চান এবং পরিবর্তনগুলি সাধারণত প্রচার হয় তা দেখতে চান। এটি বিবেচনা করুন - আপনার একটি $scope.myVarমান রয়েছে যা jQuery এর $.ajax()হ্যান্ডলারের মধ্যে সংশোধিত হবে । ভবিষ্যতে এটি এক পর্যায়ে ঘটবে। AngularJS এটি হওয়ার জন্য অপেক্ষা করতে পারে না, যেহেতু এটি jQuery এ অপেক্ষা করার নির্দেশ দেওয়া হয়নি।
$applyএটি মোকাবেলা করার জন্য, চালু করা হয়েছে। এটি আপনাকে হজমচক্র পরিষ্কারভাবে শুরু করতে দেয়। যাইহোক, আপনার কেবল এটি AngularJS (অন্যান্য ফ্রেমওয়ার্কগুলির সাথে সংহতকরণ) কিছু ডেটা স্থানান্তর করতে ব্যবহার করা উচিত তবে নিয়মিত AngularJS কোডের সাথে এই পদ্ধতিটি কখনও ব্যবহার করবেন না, কারণ AngularJS তখন ত্রুটি ছুঁড়ে দেবে।
এই সমস্ত কীভাবে ডিওএম এর সাথে সম্পর্কিত?
ঠিক আছে, আপনার সত্যিই আবার টিউটোরিয়ালটি অনুসরণ করা উচিত, এখন আপনি সমস্ত কিছু জানেন। ডাইজেস্ট চক্র নিশ্চিত করে তোলে যে UI এবং জাভাস্ক্রিপ্ট কোড সুসংগত থাকবে, $scopeযতক্ষণ না কিছু পরিবর্তন হয় ততক্ষণ সমস্ত সংযুক্ত প্রতিটি নজরদারি মূল্যায়ন করে । যদি ডাইজেস্ট লুপে আর কোনও পরিবর্তন না ঘটে তবে এটি সমাপ্ত বলে মনে করা হচ্ছে।
আপনি অবজেক্টের সাথে $scopeকন্ট্রোলারে সুস্পষ্টভাবে সংযুক্ত করতে পারেন , বা {{expression}}সরাসরি দৃষ্টিতে ফর্ম হিসাবে ঘোষণা করে ।
আমি আশা করি যা এই সমস্ত সম্পর্কে কিছু প্রাথমিক জ্ঞান পরিষ্কার করতে সহায়তা করে।
আরও পড়া: