$ পর্যবেক্ষণ () বৈশিষ্ট্য অবজেক্টেরএকটি পদ্ধতিএবং এর মতো এটি কেবল কোনও ডিওএম বৈশিষ্ট্যের মান পরিবর্তন পর্যবেক্ষণ / দেখার জন্য ব্যবহার করা যেতে পারে। এটি কেবল অভ্যন্তরীণ নির্দেশিকা ব্যবহৃত / বলা হয়। যখন আপনাকে কোনও ডিওএম বৈশিষ্ট্য পর্যবেক্ষণ / দেখার প্রয়োজন হবে যখন অন্তরঙ্গ (যেমন, {{}} 's) থাকে $ পর্যবেক্ষণ করুন।
যেমন,attr1="Name: {{name}}"
, তারপর নির্দেশ মধ্যে:attrs.$observe('attr1', ...)
।
(যদি আপনি চেষ্টা করেন তবেscope.$watch(attrs.attr1, ...)
এটি কাজ করবে না কারণ -।}।} S - আপনি পাবেনundefined
)) অন্য কিছুর জন্য ওয়াচ ব্যবহার করুন Use
$ ঘড়ি () আরও জটিল। এটি একটি "এক্সপ্রেশন" পর্যবেক্ষণ / পর্যবেক্ষণ করতে পারে, যেখানে প্রকাশটি কোনও ফাংশন বা স্ট্রিং হতে পারে। যদি অভিব্যক্তিটি একটি স্ট্রিং হয় তবে এটিকোনও ফাংশনে $ পার্স 'ডি (অর্থাত্ কৌণিক অভিব্যক্তি হিসাবে মূল্যায়ন) হয়। (এটি এই ফাংশন যা প্রতিটি ডাইজেস্ট চক্র বলা হয়)) স্ট্রিং এক্সপ্রেশনটিতে {{}} 'গুলি থাকতে পারে না। $ ঘড়ি স্কোপ অবজেক্টেরএকটি পদ্ধতি, সুতরাং যেখানেই আপনার কোনও স্কোপ অবজেক্টে অ্যাক্সেস রয়েছে সেখানেই এটি ব্যবহার / কল করা যায় in
- একটি নিয়ামক - যে কোনও নিয়ামক - এটি এনজি-ভিউ, এনজি-কন্ট্রোলার বা কোনও নির্দেশিকা নিয়ামকের মাধ্যমে তৈরি করা হয়েছে
- নির্দেশের সাথে একটি লিঙ্কিং ফাংশন, যেহেতু এটিরও একটি সুযোগে অ্যাক্সেস রয়েছে
স্ট্রিংগুলি কৌণিক অভিব্যক্তি হিসাবে মূল্যায়ন করা হয় বলে $ ঘড়িটি প্রায়শই ব্যবহার করা হয় যখন আপনি কোনও মডেল / স্কোপ সম্পত্তি দেখে / দেখতে চান। উদাহরণস্বরূপ, attr1="myModel.some_prop"
তারপরে একটি নিয়ামক বা লিঙ্ক ফাংশনে: scope.$watch('myModel.some_prop', ...)
বা scope.$watch(attrs.attr1, ...)
(বা scope.$watch(attrs['attr1'], ...)
)।
(আপনি যদি চেষ্টা করেন attrs.$observe('attr1')
তবে স্ট্রিংটি পাবেন myModel.some_prop
যা সম্ভবত আপনি চান না))
@ প্রিয়মস্কের উত্তরের মন্তব্যে আলোচিত হিসাবে, সমস্ত di পর্যবেক্ষণ এবং $ ঘড়ি প্রতিটি ডাইজেস্ট চক্র পরীক্ষা করা হয় ।
বিচ্ছিন্ন স্কোপগুলি সহ দিকনির্দেশগুলি আরও জটিল। যদি '@' সিনট্যাক্স ব্যবহার করা হয়, তবে আপনি p পর্যবেক্ষণ বা inter দেখতে পারেন এমন কোনও ডিওএম বৈশিষ্ট্য যা অন্তরঙ্গ (যেমন, {{}} 'গুলি) ধারণ করে। (এটি $ ঘড়ির সাথে কাজ করার কারণ হ'ল '@' সিনট্যাক্সটি আমাদের জন্য অন্তরঙ্গকরণ করে, তাই $ ঘড়িটি {{}} s 's ব্যতীত একটি স্ট্রিং দেখে)) কোনটি কখন ব্যবহার করা উচিত তা মনে রাখা সহজ করার জন্য, আমি ব্যবহার করার পরামর্শ দিই this এই ক্ষেত্রে জন্য পর্যবেক্ষণ।
এই সমস্ত পরীক্ষাতে সহায়তা করার জন্য, আমি একটি প্লাঙ্কার লিখেছিলাম যা দুটি নির্দেশকে সংজ্ঞায়িত করে। একটি ( d1
) একটি নতুন সুযোগ তৈরি করে না, অন্যটি ( d2
) একটি বিচ্ছিন্ন সুযোগ তৈরি করে। প্রতিটি নির্দেশের একই ছয়টি বৈশিষ্ট্য রয়েছে। প্রতিটি বৈশিষ্ট্য উভয়ই পর্যবেক্ষণ ও পর্যবেক্ষণ করা হয়।
<div d1 attr1="{{prop1}}-test" attr2="prop2" attr3="33" attr4="'a_string'"
attr5="a_string" attr6="{{1+aNumber}}"></div>
সংযোগ ফাংশনটিতে $ পর্যবেক্ষণ এবং $ ঘড়ির মধ্যে পার্থক্যগুলি দেখতে কনসোল লগটি দেখুন। তারপরে লিঙ্কটি ক্লিক করুন এবং দেখুন হ্যান্ডলারের দ্বারা সম্পাদিত সম্পত্তি পরিবর্তনগুলি দ্বারা কোন $ পর্যবেক্ষণ এবং $ ঘড়িগুলি ট্রিগার করা হয়েছে তা দেখুন।
লক্ষ্য করুন যে লিংক ফাংশনটি চললে, কোনও বৈশিষ্ট্য যার মধ্যে রয়েছে সেগুলি এখনও মূল্যায়ন করা হয় না (সুতরাং আপনি যদি বৈশিষ্ট্যগুলি পরীক্ষা করার চেষ্টা করেন তবে আপনি পাবেন undefined
)। আন্তঃবিবাহিত মানগুলি দেখার একমাত্র উপায় হ'ল পর্যবেক্ষণ (বা 'দেখুন' @ 'দিয়ে বিচ্ছিন্ন স্কোপ ব্যবহার করা হলে)। অতএব, এই বৈশিষ্ট্যের মানগুলি পাওয়া একটি অ্যাসিনক্রোনাস অপারেশন। (এবং এ কারণেই আমাদের $ পর্যবেক্ষণ এবং $ ঘড়ি কার্যকারিতা প্রয়োজন))
কখনও কখনও আপনার $ পর্যবেক্ষণ বা $ ঘড়ির প্রয়োজন হয় না। : যেমন, যদি আপনার অ্যাট্রিবিউট একটি সংখ্যা বা একটি বুলিয়ান (একটি স্ট্রিং নয়) রয়েছে, শুধু এটা একবার নির্ণয় attr1="22"
তারপর, বলে, আপনার লিঙ্ক ফাংশন: var count = scope.$eval(attrs.attr1)
। যদি এটি কেবল একটি ধ্রুব স্ট্রিং হয় - attr1="my string"
- তবে কেবল attrs.attr1
আপনার নির্দেশিকায় ব্যবহার করুন (al ইভাল () এর প্রয়োজন নেই)।
আরও দেখুন Vojta এর Google গ্রুপ পোস্টে $ ঘড়ি এক্সপ্রেশন সম্পর্কে।