অ্যাঙ্গুলারজেএস এবং ডলার ভেরিয়েবল এর ব্যবহার


128

কৌনিক জেএসে ডলার পদ্ধতি এবং ভেরিয়েবলের ব্যবহারের পিছনে যুক্তিটি হজম চলছে যখন সেই মানগুলি পরীক্ষা করা এড়াতে কৌণিক জেএসকে নির্দেশনা দেয় কিনা তা কি কেউ জানেন? সুতরাং, যদি কৌণিকটি জুড়ে আসে $scope.$valueএবং $scope.value, তবে এটি পূর্বেরটি পরীক্ষা করা এড়াবে যেহেতু এটি তার পরিবর্তনশীল নামে ডলারের অক্ষরের সাথে উপসর্গযুক্ত?


Angularjs এ "$ সুযোগ" এবং "স্কোপ" এর পার্থক্যের উপরও এই ব্লগ পোস্টটি দেখুন ...
মার্কোএস

19
কৌণিক সম্ভবত jQuery থেকে $ দূরে নিয়ে যাওয়ার চেষ্টা করছে।
daniel1426

এই লিঙ্কটি এমন কোনও পৃষ্ঠায় পুনঃনির্দেশ করে যা $ সুযোগ সম্পর্কে খুব বেশি ব্যাখ্যা করে না।
পল ব্রান্নান

5
দিকনির্দেশক - নিয়ামকের জন্য দস্তাবেজের রয়েছে $scopeতবে নির্দেশিকা রয়েছে scope। ডব্লিউটিএফ?
লিগি

উত্তর:


87

অ্যাংুলার ডলারের চিহ্নের সাথে পূর্ববর্তিত চলকগুলি উপেক্ষা করে কয়েকবার রয়েছে:

  1. ইন Schumli এর মন্তব্য নিচে, যেখানে JSON ফিল্টার তাদের আউটপুট না করবে না
  2. {{ }}নির্দেশিকা ব্যবহার করার সময় , কৌণিক নেস্টেড $ ভেরিয়েবলগুলি প্রদর্শন করবে না । উদাহরণস্বরূপ এটি কেবল visibleসম্পত্তি প্রদর্শন করে ।

    <div ng-init="n = { visible: 'foo', $ignore: 'bar' };">{{ n }}</div>
  3. স্কোপ অবজেক্টে স্পষ্টত প্রহরী যুক্ত করার সময়, এই সামগ্রীর শীর্ষস্থানীয় ডলারের চিহ্ন সহ বৈশিষ্ট্যগুলিতে পরিবর্তনগুলি পর্যবেক্ষককে ট্রিগার করবে না। দেখুন এই আপডেট বেহালার

  4. angular.equals() উপসর্গযুক্ত কীগুলি উপেক্ষা করে$


হ্যাঁ মনে হচ্ছে আপনি ঠিক বলেছেন। এমনকি ক্লিক ইভেন্টগুলি এবং এর সাথে এখনও এটি পরিবর্তন হয়। ধন্যবাদ.
matsko

7
অ্যাঙ্গুলারের কয়েকটি অংশ রয়েছে যা উপসর্গযুক্ত বৈশিষ্ট্যগুলিকে উপেক্ষা করে না, উদাহরণস্বরূপ 'জসন' ফিল্টার '$' দিয়ে শুরু করে কোনও চলক আউটপুট দেয় না।
শ্মুলি

116

এটি নীচের স্নিপেট থেকে কেবল একটি নামকরণের সম্মেলন http://docs.angularjs.org/tutorial//pp55

'$' উপসর্গ নামকরণ কনভেনশন
আপনি নিজের নিজস্ব পরিষেবা তৈরি করতে পারেন, এবং বাস্তবে আমরা ঠিক ১১ তম ধাপে এটি করব a নামকরণ কনভেনশন হিসাবে, কৌণিকের অন্তর্নির্মিত পরিষেবাগুলি, স্কোপ পদ্ধতি এবং কয়েকটি অন্যান্য কৌণিক এপিআই'র একটি '$' উপসর্গ রয়েছে নামের সামনে। কোনও সম্ভাব্য নামকরণের সংঘর্ষ এড়াতে আপনার পরিষেবা এবং মডেলগুলির নামকরণ করার সময় একটি '$' উপসর্গ ব্যবহার করবেন না।

http://docs.angularjs.org/guide/concepts#angular_namespace

কৌণিক নেমস্পেস
দুর্ঘটনাকৃত নামের সংঘর্ষ রোধ করতে, কৌণিক এমন বস্তুর নাম উপসর্গ করে যা সম্ভাব্যভাবে with এর সাথে সংঘর্ষ হতে পারে $ দয়া করে আপনার কোডটিতে $ উপসর্গটি ব্যবহার করবেন না কারণ এটি দুর্ঘটনাক্রমে কৌণিক কোডের সাথে সংঘর্ষ হতে পারে।


2
কেন নির্দেশিকা ডক [1] $scopeএর নিয়ামক থাকে তবে scopeনির্দেশিকাতে থাকে? --- [1] ডকস.আঙ্গুলারজস.আর
গাইড /

2
@ লিগি এটি কেবল সম্মেলন। stackoverflow.com/a/19289054/114558
rinogo

30

$উপসর্গ একটি পরিবর্তনশীল, প্যারামিটার, সম্পত্তি, বা পদ্ধতি যে কৌণিক কোর জন্যে উল্লেখ করে।

কাঠামোর অভ্যন্তরে উত্পন্ন বস্তুগুলির বৈশিষ্ট্যগুলি, কিন্তু আসলে এপিআইয়ের অংশ নয়, কোনও ব্যক্তিগত পদ্ধতি বা সম্পত্তি বোঝাতে $- বা এমনকি $$- দিয়ে শুরু হতে পারে । অন্যান্য লাইব্রেরিতে প্রায়শই একইভাবে উপসর্গ ব্যবহৃত হয়।_

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


আমার মনে হয় আপনি ভুল বুঝেছেন। রানটাইম গ্রাহ্য না করে কি ভেরিয়েবল নামকরণ করা হয়। আপনি এটি কল করতে পারেন $$__$_$- এটি দোভাষীর কোনও বিশেষ অর্থ ছাড়াই কেবল একটি শনাক্তকারী।
ডালগার্ড

রানটাইম এবং কাঠামোর মধ্যে পার্থক্য তুলে ধরতে আমি কয়েকটি শব্দ যুক্ত করেছি; আপনার ভোট পরিবর্তন করতে তাই বিনীত হন।
ডালগার্ড

7

সম্পূর্ণরূপে নিশ্চিত নয়, তবে আমার বিশ্বাস অ্যাঙ্গুলারজেএস ইন্টার্নালরা হজমের সময় এই $-প্রিফিক্সড ভেরিয়েবলগুলি ম্যানিপুলেট করার উপর নির্ভর করে। এই ভেরিয়েবলগুলি পরীক্ষা করার অর্থ হ'ল ডাইজেস্ট কখনই স্থিতিশীল হয় না, কারণ ডাইজেস্টের প্রতিটি চক্রের সময় এগুলি ক্রমাগত পরিবর্তন হতে পারে।

যদিও এটিতে আমাকে উদ্ধৃত করবেন না। :)


10
নিম্নমানের কারণে: "এটিতে আমাকে উদ্ধৃত করবেন না"। দুঃখিত, তবে অনিশ্চয়তা স্বীকার করে এমন একটি উত্তর খুব কার্যকর নয় :(
ডেভিড রিভার্স

2
ডাউনভোটকে আপ-এ রূপান্তরিত করা হয়েছে। আপনি ঠিক বলে ধরে নিচ্ছেন, এটি এখন একটি দরকারী উত্তর!
ডেভিড নদী

2
@ ডেভিড্রাইভারস, যদি উত্তরটি প্রথমে দ্বিধায় পড়ে আসে তবে পুনর্নির্মাণে এটি আরও কার্যকর হবে না। আসলে, উত্তরটি ভুল হতে পারে এবং দ্বিধাদ্বন্দ্বের অভাব সম্ভাব্য অন্যায়কে দৃ .়তা জানায় । পরিবর্তে, এই উত্তরটি কার্যকর হিসাবে বিবেচিত হওয়ার জন্য, এটি বিশ্বস্ত উত্সগুলি উদ্ধৃত করে কিছু প্রমাণ সহ ব্যাক আপ করা উচিত , বা প্রকাশিত পয়েন্টগুলি পুনরুত্পাদন করার জন্য একটি ফিডল সরবরাহ করা উচিত।
Ivaylo স্লাভভ

1
@ আইভায়্লোস্লাভভ: আমি আপনার সাথে একমত হই। আমি ধরে নিয়েছি (সম্ভবত ভুলভাবে) উত্তরদাতা ডাবল-চেক করেছেন যে তিনি ঠিক আছেন এবং অনিশ্চয়তা অপসারণের জন্য উত্তরটি কেবল উচ্চারণ করেননি। আমি মনে করি আমার উত্স বা ফিডল থাকতে হবে।
ডেভিড নদী 20

1
@ অ্যালেক্সফোর্ড: আরে, মানুষ ক্ষমার জন্য ধন্যবাদ! আমি দুঃখিত আমি পরিষ্কার ছিলাম না এবং যাইহোক এই সমস্ত ভুল যোগাযোগ শুরু করেছি। আপনার বক্তব্য বৈধ এবং আমি আপনার সাথে একমত। আমি কেবল এটি নিশ্চিত করতে চেয়েছিলাম যে আমাকে ভুল উপস্থাপন করা হচ্ছে না, তবে আমি আমার নিজের শব্দ দিয়ে পরিষ্কার ছিল না। যাইহোক, কোন কঠোর অনুভূতি নেই এবং আমি সত্যিই শ্রদ্ধা করি যে আপনি আমার দৃষ্টিভঙ্গি দেখতে সক্ষম হয়েছিলেন। চিয়ারস, মানুষ!
ডেভিড রিভার্স

5

আমি সর্বদা $পরিষেবার জন্য "এস" এর মতো দেখতে পাই ।


এটাই সঠিক উত্তর। এটা যৌক্তিক এবং সহজ। এগুলি প্রকৃতপক্ষে পরিষেবাদি তাই সেবার জন্য S 'এস' মনে রাখা ভাল। সুন্দর সহজ ব্যাখ্যা।
ইয়োন্ক

2
$ সুযোগ একটি পরিষেবা?
কানাগুলি

5

ডলারের ( $ ) চিহ্নগুলি নির্দিষ্ট দিকগুলিতে উপাদানগুলি পুনরাবৃত্তি হওয়া (বা ব্যাখ্যা করা) হতে বাধা দেয়। সুতরাং উদাহরণস্বরূপ বৈশিষ্ট্য যে দিয়ে শুরু জন্য $ মধ্যে ব্যবহার করা হয় না ng-repeat, কারণ লুপ জন্য একটি যদি দফা :

if(collection.hasOwnProperty(key) && key.charAt(0) != '$')

অ্যাঙ্গুলার গিথুব পৃষ্ঠায় কেউ এখানে বিষয়টি নিয়ে একটি সমস্যা তৈরি করেছেন


পদ্ধতিতে shallowCopyবৈশিষ্ট্য যে দিয়ে শুরু $$ একটি কারণ এড়ানো হয় যদি দফা সময় iterating properies :

if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {

1

@ মারকোস https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope এ লিঙ্কটি সরবরাহ করেছে যা $ সুযোগ এবং সুযোগের মধ্যে একটি পার্থক্য ব্যাখ্যা করে। অন্যান্য উত্তরে তথ্য যুক্ত করে আমি এটি দরকারী বলে মনে করেছি।

কৌনিক নির্দেশে একটি লিঙ্ক এবং নিয়ামক রয়েছে। লিঙ্কটি প্যারামিটারগুলির একটি নির্দিষ্ট সেট সহ একটি স্ট্যান্ডার্ড ফাংশন: সুযোগ, উপাদান, বৈশিষ্ট্য অবজেক্ট।

কন্ট্রোলারের যুক্তিগুলি কৌণিক ইনজেক্টর দ্বারা পরিচালিত হয় এবং আদেশের উপর নির্ভর করে না। ইনজেক্টর objects দিয়ে শুরু হওয়া প্যারামিটারগুলি সন্ধান করে কোন বস্তুকে পাস করতে হবে তা সমাধান করে $

Https://thinkster.io/a-better-way-to-learn-angularjs/scope-vs-scope এর লেখক এর ব্যাখ্যা দেওয়ার জন্য আরও ভাল কাজ করে।


-1

ভেরিয়েবলের মধ্যে নয়, একটি নিয়ামক প্রাপ্ত প্যারামিটারেও একটি বিশাল পার্থক্য রয়েছে। একটি স্কোপ প্যারামিটার একটি $ স্কোপ একের থেকে সম্পূর্ণ আলাদা।

আরও তথ্যের জন্য, এই দরকারী পোস্টটি দেখুন: http://www.thinkster.io/angularjs/aw9kWmdnik/angularjs-scope-vs-scope

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