অ্যাঙ্গুলারজেএস-এ কোনও নির্দেশনা লেখার সময়, আমি কীভাবে সিদ্ধান্ত নেব যে আমার কোনও নতুন সুযোগ, নতুন সন্তানের সুযোগ বা কোনও নতুন বিচ্ছিন্ন সুযোগ নেই?


265

আমি এমন কিছু গাইডলাইন সন্ধান করছি যা একটি নতুন নির্দেশিকা লেখার সময় কোন ধরণের সুযোগ ব্যবহার করতে হবে তা নির্ধারণে সহায়তা করতে ব্যবহার করতে পারে। আদর্শভাবে, আমি এমন একটি ফ্লোচার্টের অনুরূপ কিছু চাই যা আমাকে একগুচ্ছ প্রশ্নগুলির মধ্য দিয়ে নিয়ে যায় এবং সঠিক উত্তরটি খুঁজে বের করে - কোনও নতুন নতুন সুযোগ, নতুন সন্তানের সুযোগ বা নতুন বিচ্ছিন্ন সুযোগ নয় - তবে সম্ভবত এটি খুব বেশি চাইবে। এখানে আমার বর্তমান পল্ট্রি নির্দেশিকাগুলির সেট রয়েছে:

আমি সচেতন যে একটি উপাদানের উপর বিচ্ছিন্ন স্কোপ সহ একটি নির্দেশিকা ব্যবহার করা একই উপাদানটির অন্যান্য সমস্ত নির্দেশকে একই (এক) বিচ্ছিন্ন সুযোগ ব্যবহার করতে বাধ্য করে, তাই যখন বিচ্ছিন্ন সুযোগ ব্যবহার করা যায় তখন কি এই মারাত্মকভাবে সীমাবদ্ধ হয় না?

আমি আশা করছি যে কৌণিক-ইউআই দল থেকে কিছু (বা অন্যরা যারা অনেক নির্দেশনা লিখেছেন) তাদের অভিজ্ঞতা ভাগ করে নিতে পারে।

দয়া করে এমন কোনও উত্তর যুক্ত করবেন না যা কেবল "পুনরায় ব্যবহারযোগ্য উপাদানগুলির জন্য একটি বিচ্ছিন্ন সুযোগ ব্যবহার করুন" বলে বলে।


"চাইল্ড স্কোপ" বলতে আপনার অর্থ "স্কোপ। $ নতুন ()" দ্বারা লিঙ্ক ফাংশনে স্কোপ তৈরি করা? কারণ আমি জানি, দিকনির্দেশকের বিচ্ছিন্ন সুযোগ থাকতে পারে বা না থাকতে পারে (সুতরাং যেখানে ব্যবহার করা হয়েছে সেখানে স্কোপ ব্যবহার করা হবে)
ভ্যালেন্টাইন শায়বানভ

3
@ ভ্যালেন্টাইনশ্যাবানোভ সেটিং স্বয়ংক্রিয়ভাবে scope: trueব্যবহার করে একটি শিশু সুযোগ তৈরি করবে $scope.new()
জোশ ডেভিড মিলার

2
@ ভ্যালেন্টাইন, জোশ যা বলেছিলেন: তাই, তিনটি সম্ভাবনা হ'ল scope: false(ডিফল্ট, কোনও নতুন সুযোগ নেই), scope: true(নতুন সুযোগ যা প্রোটোটাইপিকভাবে উত্তরাধিকার সূত্রে প্রাপ্ত হয়) এবং scope: { ... }(নতুন বিচ্ছিন্ন সুযোগ)।
মার্ক রাজকক

1
হ্যাঁ, ধন্যবাদ "সত্য" এবং "{}" এর মধ্যে আমি এই পার্থক্যটি মিস করেছি। জানা ভাল.
ভ্যালেন্টাইন শায়বানভ

এখানে একটি চতুর্থ ঘটনা রয়েছে যা লোকেরা সাধারণত উপেক্ষা করে থাকে .. এটি হ'ল "নির্দেশিকা নিয়ন্ত্রক" .. আমার মনে হয়
এগুলিও

উত্তর:


291

কি দুর্দান্ত প্রশ্ন! আমি অন্যদের কী বলতে চাই তা শুনতে পছন্দ করি তবে আমি যে গাইডলাইন ব্যবহার করি তা এখানে।

উচ্চ-উচ্চতার ভিত্তি: স্কোপটি "আঠালো" হিসাবে ব্যবহৃত হয় যা আমরা প্যারেন্ট কন্ট্রোলার, নির্দেশিকা এবং নির্দেশিকা টেম্পলেটগুলির মধ্যে যোগাযোগের জন্য ব্যবহার করি।

মূল সুযোগ: scope: false তাই কোনও নতুন সুযোগ নেই

আমি এটি প্রায়শই ব্যবহার করি না, তবে @ মারকরাজকোক যেমন বলেছিলেন, যদি নির্দেশটি কোনও স্কোপ ভেরিয়েবল অ্যাক্সেস না করে (এবং স্পষ্টত কোনও সেট করে না!) তবে আমি যতটা উদ্বিগ্ন এটি ঠিক ঠিক। এটি শিশু নির্দেশনার জন্যও সহায়ক যেগুলি কেবল পিতামাতার নির্দেশের প্রসঙ্গে ব্যবহৃত হয় (যদিও সর্বদা এর ব্যতিক্রম রয়েছে) এবং এতে কোনও টেমপ্লেট নেই। মূলত কোনও টেমপ্লেটের সাথে থাকা কোনও কিছুই স্কোপ ভাগ করে নেওয়ার পক্ষে নয়, কারণ আপনি অ্যাক্সেস এবং হেরফেরের জন্য সহজাতভাবে সেই সুযোগটি প্রকাশ করছেন (তবে আমি নিশ্চিত যে এই নিয়মের ব্যতিক্রম রয়েছে)।

উদাহরণ হিসাবে, আমি সম্প্রতি একটি নির্দেশিকা তৈরি করেছি যা আমি লেখার প্রক্রিয়ায় আছি এমন একটি এসভিজি লাইব্রেরি ব্যবহার করে একটি (স্ট্যাটিক) ভেক্টর গ্রাফিক আঁকেন। এটি $observeদুটি বৈশিষ্ট্য ( widthএবং height) এবং এর গণনাগুলিতে সেগুলি ব্যবহার করে তবে এটি কোনও স্কোপ ভেরিয়েবল সেট করে না এবং পড়তে পারে না এবং এর কোনও টেম্পলেট নেই। অন্য সুযোগ তৈরি না করার জন্য এটি ভাল ব্যবহারের ক্ষেত্রে; আমাদের একজনের দরকার নেই, তাই কেন বিরক্ত করবেন?

তবে অন্য এসভিজির নির্দেশে, তবে আমার ব্যবহারের জন্য এক সেট ডেটা প্রয়োজন ছিল এবং অতিরিক্তভাবে একটি সামান্য বিট স্টোরও সংরক্ষণ করতে হয়েছিল। এই ক্ষেত্রে, পিতামাত স্কোপ ব্যবহার করা দায়িত্বহীন হবে (আবার সাধারণভাবে কথা বলা)। তাই পরিবর্তে...

শিশু সুযোগ: scope: true

একটি শিশু সুযোগ সহ নির্দেশাবলী প্রসঙ্গ-সচেতন এবং বর্তমান সুযোগের সাথে ইন্টারঅ্যাক্ট করার উদ্দেশ্যে are

স্পষ্টতই, একটি বিচ্ছিন্ন সুযোগের এগুলির একটি মূল সুবিধাটি হ'ল ব্যবহারকারীরা তাদের যে কোনও বৈশিষ্ট্য চান তাতে ইন্টারপোলেশন ব্যবহার করতে পারেন; উদাহরণস্বরূপ, class="item-type-{{item.type}}"বিচ্ছিন্ন সুযোগের সাথে কোনও নির্দেশিকা ব্যবহার করা ডিফল্টরূপে কাজ করবে না, তবে একটি শিশু স্কোপ সহ একটিতে সূক্ষ্মভাবে কাজ করবে কারণ যেটি দ্বিখণ্ডিত রয়েছে তা এখনও ডিফল্টরূপে প্যারেন্ট স্কোপে পাওয়া যেতে পারে। এছাড়াও, নির্দেশিকা নিজেই অভিভাবকদের দূষণ বা ক্ষতি সম্পর্কে চিন্তা না করে নিজের সুযোগের প্রসঙ্গে গুণাবলী এবং অভিব্যক্তিগুলি নিরাপদে মূল্যায়ন করতে পারে।

উদাহরণস্বরূপ, একটি সরঞ্জামদণ্ড এমন কিছু যা সবেমাত্র যুক্ত হয়; একটি বিচ্ছিন্ন সুযোগ কাজ করবে না (ডিফল্টরূপে, নীচে দেখুন) কারণ আশা করা হয় যে আমরা এখানে অন্য নির্দেশাবলী বা অন্তরবিচ্ছিন্ন বৈশিষ্ট্যগুলি ব্যবহার করব। টুলটিপটি কেবল একটি বর্ধন। তবে টুলটিপটিতে একটি উপ-নির্দেশিকা এবং / অথবা টেম্পলেট ব্যবহার করার সুযোগ রয়েছে এবং স্পষ্টতই তার নিজস্ব রাষ্ট্র পরিচালনা করার সুযোগ রয়েছে, সুতরাং পিতামাতার সুযোগটি ব্যবহার করা সত্যই খারাপ হবে। আমরা হয় এটি দূষিত করছি বা এর ক্ষতি করছি এবং বুয়েনোও নয়।

আমি নিজেকে শিশু স্কোপগুলি বিচ্ছিন্ন বা পিতামাতার স্কোপের চেয়ে বেশি বার ব্যবহার করে দেখতে পাই।

সুযোগ বিচ্ছিন্ন: scope: {}

এটি পুনরায় ব্যবহারযোগ্য উপাদানগুলির জন্য। :-)

তবে গুরুতরভাবে, আমি "পুনরায় ব্যবহারযোগ্য উপাদানগুলি" "স্ব-অন্তর্ভুক্ত উপাদানগুলি" হিসাবে মনে করি। উদ্দেশ্যটি হ'ল এগুলি কোনও নির্দিষ্ট উদ্দেশ্যে ব্যবহার করা উচিত, সুতরাং তাদেরকে অন্য নির্দেশাবলীর সাথে সংমিশ্রণ করা বা ডোম নোডের সাথে অন্য অন্তরবিচ্ছিন্ন বৈশিষ্ট্য যুক্ত করা কোনওভাবেই বোঝা যায় না।

আরও সুনির্দিষ্ট হওয়ার জন্য, এই স্বতন্ত্র কার্যকারিতার জন্য যা কিছু প্রয়োজন তা পিতামাতার সুযোগের প্রসঙ্গে মূল্যায়িত নির্দিষ্ট বৈশিষ্ট্যের মাধ্যমে সরবরাহ করা হয়; এগুলি হয় হয় একমুখী স্ট্রিং ('@'), একমুখী এক্সপ্রেশন ('&'), বা দ্বি-মুখের ভ্যারিয়েবল বাইন্ডিংস ('=')।

স্ব-অন্তর্ভুক্ত উপাদানগুলিতে, এটির উপর অন্য নির্দেশাবলী বা বৈশিষ্ট্য প্রয়োগ করার প্রয়োজন বোধ করে না কারণ এটি নিজে থেকেই বিদ্যমান। এর শৈলীটি তার নিজস্ব টেমপ্লেট দ্বারা পরিচালিত হয় (যদি প্রয়োজন হয়) এবং উপযুক্ত সামগ্রী প্রতিলিপি থাকতে পারে (প্রয়োজনে)। এটি স্বতন্ত্র, সুতরাং আমরা এটিকে একটি বিচ্ছিন্ন সুযোগে রেখেছিলাম: "এটির সাথে গোলযোগ করবেন না I'm আমি আপনাকে এই কয়েকটি বৈশিষ্ট্যের মাধ্যমে একটি সংজ্ঞায়িত এপিআই দিচ্ছি।"

একটি ভাল সেরা অনুশীলন হ'ল নির্দেশক লিঙ্ক এবং নিয়ন্ত্রণকারী ফাংশনগুলি যথাসম্ভব টেম্পলেট-ভিত্তিক স্টাফগুলি বাদ দেওয়া। এটি অন্য "এপিআই-জাতীয়" কনফিগারেশন পয়েন্ট সরবরাহ করে: নির্দেশিকার ব্যবহারকারী কেবলমাত্র টেমপ্লেটটি প্রতিস্থাপন করতে পারে! কার্যকারিতা সমস্ত একই থাকে, এবং এর অভ্যন্তরীণ এপিআই কখনই স্পর্শ করা যায় নি, তবে আমরা স্টাইলিং এবং ডম প্রয়োগের সাথে আমাদের যতটুকু প্রয়োজন ততটাই গোলমাল করতে পারি। ইউআই / বুটস্ট্র্যাপ কীভাবে এটি করা যায় তার একটি দুর্দান্ত উদাহরণ কারণ পিটার এবং পাভেল দুর্দান্ত।

বিচ্ছিন্নতার সাথে ব্যবহারের জন্য বিচ্ছিন্ন স্কোপগুলিও দুর্দান্ত। ট্যাবগুলি নিন; তারা না শুধুমাত্র পুরো কার্যকারিতা আছে, কিন্তু যাই হোক না কেন হয় ভিতরে যখন ট্যাব (এবং ফলকগুলি) যাই হোক না কেন তারা চান করতে যাব এটা অভিভাবক সুযোগ মধ্যে থেকে অবাধে মূল্যায়ন করা যাবে। এই ট্যাবগুলির স্পষ্টতই তাদের নিজস্ব রাষ্ট্র রয়েছে , যা স্কোপের সাথে অন্তর্ভুক্ত (টেমপ্লেটের সাথে ইন্টারঅ্যাক্ট করার জন্য), তবে সেই রাজ্যের যে প্রসঙ্গে এটি ব্যবহৃত হয়েছিল তার সাথে কোনও সম্পর্ক নেই it's এটি সম্পূর্ণরূপে অভ্যন্তরীণ যা কোনও ট্যাবকে নির্দেশকে একটি ট্যাব নির্দেশিকা করে তোলে। তদ্ব্যতীত, ট্যাবগুলির সাথে অন্য কোনও নির্দেশিকা ব্যবহার করার পক্ষে এটি তেমন অর্থবোধ করে না। এগুলি ট্যাব - এবং আমরা ইতিমধ্যে সেই কার্যকারিতাটি পেয়েছি!

আরও কার্যকারিতা সহ এটি ঘিরে বা আরও কার্যকারিতা প্রতিলিপি করুন, তবে নির্দেশটি এটি ইতিমধ্যে যা রয়েছে।

যা যা বলেছিল, আমার অবশ্যই লক্ষ্য করা উচিত যে বিচ্ছিন্ন সুযোগের কিছু সীমাবদ্ধতাগুলির (যেমন বৈশিষ্ট্যগুলি) প্রায় কাছাকাছি উপায় রয়েছে, যেমন @ প্রলোজার তার উত্তরে ইঙ্গিত করেছিলেন। উদাহরণস্বরূপ, শিশু স্কোপ বিভাগে, আমি বিচ্ছিন্ন স্কোপ (ডিফল্টরূপে) ব্যবহার করার সময় অ-নির্দেশমূলক গুণাবলীর বিরতিতে বিরতি উল্লেখ করেছি। তবে ব্যবহারকারী, উদাহরণস্বরূপ, সহজভাবে ব্যবহার করতে পারে class="item-type-{{$parent.item.type}}"এবং এটি আবার কাজ করবে। সুতরাং যদি কোনও বাচ্চার সুযোগের উপর বিচ্ছিন্ন সুযোগ ব্যবহার করার জন্য যদি কোন বাধ্যতামূলক কারণ থাকে তবে আপনি এই সীমাবদ্ধতার কয়েকটি সম্পর্কে উদ্বিগ্ন হন তবে জেনে রাখুন যে আপনার প্রয়োজন হলে আপনি কার্যত সেগুলির মধ্যে কাজ করতে পারেন।

সারসংক্ষেপ

কোনও নতুন সুযোগ নেই এমন নির্দেশিকাগুলি কেবল পঠনযোগ্য; তারা সম্পূর্ণরূপে বিশ্বস্ত (যেমন অ্যাপ্লিকেশনের অভ্যন্তরীণ) এবং তারা জ্যাক স্পর্শ করে না। শিশুদের স্কোপ সহ নির্দেশাবলী কার্যকারিতা যুক্ত করে তবে এগুলি কেবল কার্যকারিতা নয়। শেষ অবধি, বিচ্ছিন্ন স্কোপগুলি সেই নির্দেশনার জন্য যা পুরো লক্ষ্য; তারা স্বতন্ত্র, সুতরাং তাদের দুষ্টু হতে দেওয়া ঠিক আছে (এবং সর্বাধিক "সঠিক")।

আমি আমার প্রাথমিক চিন্তাভাবনাগুলি বের করে আনতে চেয়েছিলাম, তবে আমি আরও কিছু জিনিস নিয়ে চিন্তা করার সাথে সাথে এটি আপডেট করব। তবে পবিত্র জঞ্জাল - এটি একটি উত্তরের জন্য দীর্ঘ ...


পিএস: সম্পূর্ণরূপে স্পর্শকাতর, তবে যেহেতু আমরা স্কোপগুলির বিষয়ে কথা বলছি, আমি "প্রোটোটাইপিকাল" বলতে পছন্দ করি তবে অন্যরা "প্রোটোটাইপাল" পছন্দ করে, এটি আরও নির্ভুল বলে মনে হয় তবে কেবল জিভটি বন্ধ করে দেয় না well :-)


ধন্যবাদ জোশ, দুর্দান্ত উত্তর। আমি এর জন্য দীর্ঘ উত্তর আশা / চেয়েছিলাম। দুটি জিনিস যা আমি অনুসরণ করি নি: 1) সন্তানের সুযোগ: "ব্যবহারকারীরা তাদের যে কোনও গুণাবলীর চান তাতে ইন্টারপোলেশন ব্যবহার করতে পারেন"। 2) সুযোগ বিচ্ছিন্ন: "বা সমস্ত, ''? 'এর ক্ষেত্রে আপনি কি তাদের সম্পর্কে কিছুটা ব্যাখ্যা করতে পারেন? (মন্তব্য লেখার যে যদি সহজ পরিবর্তে আপনার পোস্টটি সম্পাদনা করুন মুক্ত মনে।)
মার্ক Rajcok

@ মার্করজককের জন্য (1), আমি এটিকে কিছুটা কম খারাপ করে তুলতে পরিবর্তন করেছি - যদি আমি ব্যর্থ হই তবে আমাকে জানান। (2) এর জন্য, এটি টাইপো এবং দুর্বল শব্দের সংমিশ্রণ ছিল; আমি সেই অনুচ্ছেদটি আরও পরিষ্কার করে লিখলাম। আমি দু'একটি অতিরিক্ত উদাহরণও যুক্ত করেছি, আরও কয়েকটি বিষয় স্পষ্ট করে জানিয়েছি এবং কিছু টাইপও ঠিক করেছি।
জোশ ডেভিড মিলার

উত্তরে উল্লিখিত হিসাবে - কৌণিকের জন্য বুটস্ট্র্যাপ এগুলিকে একত্রিত করার একটি দুর্দান্ত উদাহরণ। আমি অ্যাকর্ডিয়নের উদাহরণটি বিশেষভাবে দরকারী হিসাবে পেয়েছি - গিটহাব - অ্যাকর্ডিয়ান
CalM

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

2
@ ব্যবহারকারী 2483724 একটি খুব সাধারণ ভুল ধারণাটি হ'ল "পুনরায় ব্যবহারযোগ্য" নির্দেশিকা হ'ল বিচ্ছিন্ন সুযোগ ব্যবহার করে; তাই না আপনি যদি পূর্ব-প্যাকেজযুক্ত নির্দেশের দিকে লক্ষ্য করেন তবে তাদের মধ্যে প্রায় কেউই বিচ্ছিন্ন স্কোপগুলি ব্যবহার করেন না - এমন কি কোনও শিশু স্কোপও নয় - তবে আমি আপনাকে আশ্বাস দিচ্ছি যে তারা পুনরায় ব্যবহারযোগ্য! নির্দেশের মধ্যে থাকা সুযোগটি কীভাবে ব্যবহৃত হয় সে ক্ষেত্রে নিয়মটি হওয়া উচিত। যদি এটি কোনও ফাইলে স্থান সঞ্চয় করার বিষয়ে হয় তবে আমি নিশ্চিত নই যে কোনও নির্দেশিকা সর্বোত্তম পন্থা is এটি বিকাশকারীর পক্ষে প্রক্রিয়াজাতকরণের সময় বাড়ায়। তবে যদি আপনার অবশ্যই হয় তবে এটির জন্য যান। অথবা একটি ব্যবহার করুন ngInclude। বা এটি আপনার বিল্ডের অংশ হিসাবে করুন। অনেক বিকল্প!
জোশ ডেভিড মিলার

52

আমার ব্যক্তিগত নীতি এবং অভিজ্ঞতা:

বিচ্ছিন্ন: একটি ব্যক্তিগত স্যান্ডবক্স

আমি প্রচুর স্কোপ পদ্ধতি এবং ভেরিয়েবলগুলি তৈরি করতে চাই যা কেবলমাত্র আমার নির্দেশিকা দ্বারা ব্যবহৃত হয় এবং ব্যবহারকারীর দ্বারা দেখা বা সরাসরি অ্যাক্সেস করা যায় না। আমার কাছে কী স্কোপ ডেটা পাওয়া যায় তা আমি হোয়াইটলিস্ট করতে চাই। আমি পিতামাতার স্কোপে (প্রভাবিত না হয়ে) পিছনে লাফিয়ে allowোকাতে মঞ্জুরির ব্যবহার করতে পারি । আমি চান না যে আমার পরিবর্তনশীল এবং পদ্ধতিগুলি ট্রান্সক্লোকড শিশুদের মধ্যে অ্যাক্সেসযোগ্য।

শিশু: সামগ্রীর একটি অনুচ্ছেদ ction

আমি সুযোগ পদ্ধতি এবং ভেরিয়েবল যে তৈরি করতে চান করতে পারেন ব্যবহারকারী দ্বারা প্রবেশ করা যেতে, কিন্তু আমার নির্দেশ প্রেক্ষাপটে বাইরে পার্শ্ববর্তী সুযোগ (ভাইবোন এবং পিতামাতা) প্রাসঙ্গিক নয়। আমি সমস্ত পিতামাতার স্কোপ ডেটা স্বচ্ছভাবে কমে যেতে দিতে চাই।

কিছুই নয়: সাধারণ, কেবল পঠন সংক্রান্ত নির্দেশিকা

স্কোপ পদ্ধতি বা ভেরিয়েবলগুলির সাথে আমার সত্যিই জগাখিচির দরকার নেই। আমি সম্ভবত এমন কিছু করছি যা Scopes (যেমন সরল jQuery প্লাগইন প্রদর্শন, বৈধকরণ ইত্যাদি) এর সাথে করার দরকার নেই।

মন্তব্য

  • আপনাকে এনজিএমডেল বা অন্যান্য জিনিসগুলি সরাসরি আপনার সিদ্ধান্তকে প্রভাবিত করতে দেওয়া উচিত নয়। ng-model=$parent.myVal(শিশু) বা ngModel: '='(বিচ্ছিন্ন) মতো কাজ করে আপনি বিজোড় আচরণকে বাধা দিতে পারেন ।
  • আইসোলেট + ট্রান্সক্লোক্ট সমস্ত সাধারণ আচরণ সহোদর নির্দেশাবলী এবং পিতামাতার স্কোপে ফিরে আসবে, সুতরাং এটি আপনার রায়কেও প্রভাবিত না করে।
  • কারও উপর সুযোগ নিয়ে জঞ্জাল করবেন না কারণ এটি ডিওএমের নীচের অর্ধেকের জন্য স্কোপে ডেটা রাখার মতো তবে শীর্ষ অর্ধেক নয় যা 0 ইন্দ্রিয়যুক্ত করে তোলে।
  • নির্দেশিক অগ্রাধিকারগুলিতে মনোযোগ দিন (এটি কীভাবে বিষয়গুলিকে প্রভাবিত করতে পারে তার ठोस উদাহরণ নেই)
  • ইনজেকশন পরিষেবাগুলি বা কোনও স্কোপ প্রকারের সাথে নির্দেশাবলী জুড়ে যোগাযোগ করতে কন্ট্রোলার ব্যবহার করুন। আপনি require: '^ngModel'প্যারেন্ট উপাদানগুলিতে সন্ধান করতেও পারেন ।

1
আমি এই অংশটি ভুল বুঝে থাকতে পারি: "আইসোলেট + ট্রান্সক্লোক্ট সহ সমস্ত সাধারণ আচরণ সহোদর নির্দেশকে পুনরুদ্ধার করবে"। এই উত্সাহী দেখুন । আপনাকে কনসোলে দেখতে হবে।
জোশ ডেভিড মিলার

1
আপনার অন্তর্দৃষ্টি / উত্তরের জন্য ProLoser ধন্যবাদ। আপনি যে লোকদের আশা করেছিলেন তাদের মধ্যে একজন যদি আমি কৌণিকুল-ইউআই ট্যাগ যুক্ত করি তবে এই পোস্টটি দেখতে পাবেন।
মার্ক রাজকক

@ জোশডাভিডমিলার যখন একই ডিওএম উপাদানগুলির দিকনির্দেশ সম্পর্কে কথা বলছেন তখন আরও জটিল হয়ে উঠবে এবং পরিবর্তে আপনার অগ্রাধিকারের সম্পত্তিটি একবার দেখা উচিত। প্রতিলিপি শিশুদের সামগ্রীতে আরও প্রাসঙ্গিক।
প্রোলোজার

1
@ প্রোলার রাইট, তবে আমি নিশ্চিত নই যে আপনি এই বিবৃতিটি দিয়ে কী বোঝাতে চেয়েছিলেন। তারা স্পষ্টতই বাচ্চাদের প্রভাবিত করে, তবে কীভাবে নির্দেশাবলীর স্কোপগুলি তাদের সহোদর নির্দেশকে মোটেই প্রভাবিত করে?
জোশ ডেভিড মিলার

18

প্রচুর নির্দেশনা লেখার পরে, আমি কম isolatedসুযোগ ব্যবহার করার সিদ্ধান্ত নিয়েছি । যদিও এটি দুর্দান্ত এবং আপনি ডেটাগুলি সজ্জিত করেন এবং পিতামাতার স্কোপে ডেটা ফাঁস করবেন না তা নিশ্চিত হওয়া সত্ত্বেও, আপনি একসাথে যেভাবে নির্দেশনা ব্যবহার করতে পারেন তা এটি কঠোরভাবে সীমাবদ্ধ করে। সুতরাং,

আপনি যে নির্দেশনাটি লিখতে চলেছেন তা সম্পূর্ণ নিজের মতো করে চলতে চলেছে এবং আপনি অন্য নির্দেশাবলীর সাথে ভাগ করে নিচ্ছেন না, বিচ্ছিন্ন সুযোগের দিকে যান । (কোনও উপাদান যেমন আপনি কেবল এটিকে শেষ করতে পারেন, শেষ বিকাশকারীর পক্ষে খুব বেশি কাস্টমাইজেশন নেই) (আপনি যখন সাব-এলিমেন্টগুলির মধ্যে নির্দেশনা রয়েছে সেগুলি লেখার চেষ্টা করেন তখন এটি খুব কৌশলযুক্ত হয়)

আপনি যে নির্দেশনাটি লিখতে চলেছেন তা যদি কেবল ডম ম্যানিপুলেশন করতে চলেছে যার কোনও অভ্যন্তরীণ সুযোগ বা স্পষ্টত স্কোপ পরিবর্তন (বেশিরভাগ খুব সহজ জিনিস) দরকার নেই; কোন নতুন সুযোগ জন্য যান । (যেমন ngShow, ngMouseHover, ngClick, ngRepeat)

আপনি যে নির্দেশনাটি লিখতে চলেছেন তা যদি পিতামাতার স্কোপের কিছু উপাদান পরিবর্তন করতে হয় তবে কিছু অভ্যন্তরীণ অবস্থাও পরিচালনা করতে হয় তবে নতুন সন্তানের সুযোগের দিকে যান । (যেমন ngController)

নির্দেশের জন্য উত্স কোডটি পরীক্ষা করে দেখুন: https://github.com/angular/angular.js/tree/master/src/ng/directive
এটি কীভাবে তাদের সম্পর্কে চিন্তাভাবনা করতে সাহায্য করে


যদি বেশ কয়েকটি উপাদানগুলির একে অপরের সাথে যোগাযোগের প্রয়োজন হয় তবে তাদের বিচ্ছিন্ন সুযোগ এবং ব্যবহার থাকতে পারে require, সুতরাং আপনার নির্দেশিকাগুলি এখনও অবনমিত রাখা। তাহলে এটি কীভাবে সম্ভাবনা সীমাবদ্ধ করে? এটি আরও বেশি নির্দেশকে আরও সুনির্দিষ্ট করে তোলে (তাই আপনি কীসের উপর নির্ভরশীল তা ঘোষণা করুন)। সুতরাং আমি কেবল একটি নিয়ম রেখে যাব: যদি আপনার নির্দেশের স্থিতি থাকে বা যেখানে এটি ব্যবহৃত হয় এমন সুযোগ থেকে কোনও ডেটা প্রয়োজন হয় - বিচ্ছিন্ন সুযোগ ব্যবহার করুন। অন্যথায় সুযোগ ব্যবহার করবেন না। এবং "চাইল্ড স্কোপস" সম্পর্কে - আমি বেশ অনেক দিকনির্দেশনাও লিখেছি এবং এই বৈশিষ্ট্যের প্রয়োজন হয় না। যদি "প্যারেন্ট স্কোপে কিছু উপাদান পরিবর্তন করা দরকার" - বাইন্ডিং ব্যবহার করুন।
ভ্যালেন্টাইন শায়বানভ

এছাড়াও "পিতামাতার স্কোপে কিছু উপাদান পরিবর্তন করা দরকার" - আপনি যদি শিশু স্কোপগুলিতে কিছু সংশোধন করেন তবে প্যারেন্ট স্কোপে পরিবর্তন করা যায় না (যদি আপনি নোংরা $parentহ্যাক ব্যবহার না করেন )। তাই নির্দেশনা জন্য আসলে "শিশু সুযোগ" এমন কিছু বিষয় যা মত দেখাচ্ছে বেশ পিছন ব্যবহার করা উচিত হয় - মত ngRepeatযে নতুন শিশু পুনরাবৃত্তি প্রতিটি আইটেমের জন্য সুযোগ তৈরি করে (কিন্তু এটি ব্যবহার করে এটি তৈরি করে scope.$new();এবং scope: true
Valentyn Shybanov

1
আপনি একই উপাদানটির মধ্যে একাধিক বিচ্ছিন্ন স্কোপের জন্য জিজ্ঞাসা করতে পারবেন না, যদি আপনি তাদের পরিষ্কারভাবে বাঁধেন না তবে আপনি প্যারেন্ট স্কোপের ফাংশনে অ্যাক্সেস করতে পারবেন না। (শুভকামনা ngClickইত্যাদি ব্যবহার করে ) প্রয়োজনীয়তা আমি একরকম ডিউপলিং তৈরি করি যা আমি সম্মত তবে আপনার পিতামাতার নির্দেশিকা সম্পর্কে এখনও সচেতন হওয়া দরকার। যদি না এটি কোনও উপাদানটির মতো হয় তবে আমি বিচ্ছিন্ন হয়ে যাওয়ার বিপক্ষে। দিকনির্দেশক (কমপক্ষে, তাদের বেশিরভাগ) উচ্চ পুনরায় ব্যবহারযোগ্য বলে বোঝানো হয় এবং বিচ্ছিন্নতা এটিকে ভেঙে দেয়।
উমুর কনটাসı

আমি বাচ্চাদের স্কোপকে নির্দেশনাতেও ব্যবহার করি না তবে যেহেতু একটি শিশু স্কোপ মূলত পিতামাতার সুযোগ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত, যদি পিতামাতার স্কোপের কোনও সম্পত্তির মধ্যে কোনও সম্পত্তির অ্যাক্সেস থাকে তবে পরিবর্তনগুলি জনবসতিযুক্ত হয়। কৌণিকের লেখকগণ এটি সম্পর্কে এমটিভি মিটআপে কথা বলেছেন, "কোথাও একটি বিন্দু থাকা ভাল" youtube.com/watch?v=ZhfUv0spHCY
উমুর কনটাসে

5
প্রথমত, আমি মনে করি আপনি বিচ্ছিন্ন স্কোপগুলিতে কিছুটা কঠোর। আমি মনে করি যে তাদের থাকার ক্রেডিট দেওয়ার চেয়ে তাদের বিস্তৃত প্রয়োগযোগ্যতা রয়েছে এবং আপনি ব্যবহার করার সময় আমরা যে সমস্ত চ্যালেঞ্জগুলি (সঠিকভাবে) চিহ্নিত করেছি সেগুলি এড়িয়ে যাওয়ার বিভিন্ন উপায় রয়েছে them আমি "শেষ বিকাশকারীদের জন্য খুব বেশি কাস্টমাইজেশন না" এর সাথেও একমত নই - বিশদর জন্য আমার উত্তর দেখুন। এটি বলেছিল, আপনার উত্তরটি খারাপ বা ভুলও ছিল না এবং এটি প্রশ্নের সমাধান করেছে, সুতরাং কেন এটি নিচে ভোট হয়েছে সে বিষয়ে আমি নিশ্চিত নই। সুতরাং, +1।
জোশ ডেভিড মিলার

9

ভেবেছিলাম আমি আমার বর্তমান বোঝাপড়াটি যুক্ত করব এবং এটি অন্যান্য জেএস ধারণার সাথে কীভাবে সম্পর্কিত।

ডিফল্ট (যেমন ঘোষিত বা সুযোগ নয়: মিথ্যা)

এটি দার্শনিকভাবে বৈশ্বিক চলকগুলি ব্যবহারের সমতুল্য। আপনার নির্দেশিকা পিতামাতার নিয়ন্ত্রকের সমস্ত কিছুতে অ্যাক্সেস করতে পারে তবে এটি তাদের প্রভাবিত করছে এবং একই সাথে প্রভাবিত হচ্ছে।

সুযোগ: {}

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

সুযোগ: শিশু

এটি গ্লোবাল ভেরিয়েবল এবং সুস্পষ্ট পাস্ত্রথ্রোর মধ্যবর্তী স্থল। এটি জাভাস্ক্রিপ্টের প্রোটোটাইপ চেইনের সমান এবং কেবল প্যারেন্ট স্কোপের একটি অনুলিপি আপনাকে প্রসারিত করে। যদি আপনি একটি বিচ্ছিন্ন সুযোগ তৈরি করেন এবং প্যারেন্ট স্কোপের প্রতিটি বৈশিষ্ট্য এবং ফাংশনে পাস করেন তবে এটি কার্যত এটির সমতুল্য।


মূলটি হ'ল যে কোনও নির্দেশিকা কোনওভাবেই লেখা যায়। আপনাকে সংগঠিত করতে সহায়তা করার জন্য বিভিন্ন সুযোগের ঘোষণাগুলি কেবল সেখানে রয়েছে। আপনি সবকিছুকে একটি মডিউল তৈরি করতে পারেন, বা আপনি কেবল সমস্ত বৈশ্বিক চলক ব্যবহার করতে পারেন এবং খুব সতর্ক হতে পারেন। রক্ষণাবেক্ষণের স্বাচ্ছন্দ্যের জন্য যদিও আপনার যুক্তিটিকে যৌক্তিক সুসংগত অংশগুলিতে রূপান্তর করা ভাল rable এক খোলা ঘাট এবং বন্ধ জেল-বাড়ির মধ্যে ভারসাম্য রয়েছে।এটি বিশ্বাস করার কারণটি আমার পক্ষে বিশ্বাসযোগ্য কারণ হ'ল লোকেরা যখন এটি সম্পর্কে জানতে পারে তখন তারা মনে করে যে তারা কীভাবে নির্দেশনাগুলি কাজ করে সে সম্পর্কে শিখছে তবে বাস্তবে তারা কোড / যুক্তিবাদী সংস্থা সম্পর্কে শিখছে।

আর একটি জিনিস যা আমাকে নির্দেশ করে কীভাবে এনজিইনক্লুড সম্পর্কে শিখছে তা নির্ধারণ করতে সহায়তা করেছিল। এনজিইনক্লুড আপনাকে এইচটিএমএল পার্টিয়াল অন্তর্ভুক্ত করতে সহায়তা করে। আমি যখন প্রথম নির্দেশাবলী ব্যবহার শুরু করি তখন আমি দেখতে পেলাম যে আপনি নিজের কোড হ্রাস করার জন্য এটির টেম্পলেট বিকল্পটি ব্যবহার করতে পারেন তবে আমি আসলে কোনও যুক্তি সংযুক্ত করছি না।

অবশ্যই কৌণিক নির্দেশাবলী এবং কৌণিক-ইউআই টিমের কাজকর্মের মধ্যে আমি এখনও আমার নিজস্ব নির্দেশনা তৈরি করতে পারি নি যা যথেষ্ট কিছু করে তাই এই সম্পর্কে আমার দৃষ্টিভঙ্গিটি সম্পূর্ণ ভুল হতে পারে।


2

আমি উমুরের সাথে একমত হই। তত্ত্বগতভাবে, বিচ্ছিন্ন স্কোপগুলি দুর্দান্ত এবং "পোর্টেবল" শোনায় তবে অ-তুচ্ছ কার্যকারিতা জড়িত করার জন্য আমার অ্যাপ্লিকেশনটি তৈরি করার সময় আমি সম্পূর্ণরূপে আমার লেখার জন্য বিভিন্ন নির্দেশকে (কিছু লোকের মধ্যে বাসা বাঁধে বা তাদের সাথে বৈশিষ্ট্য যুক্ত করে) অন্তর্ভুক্ত করার প্রয়োজনীয়তা অর্জন করি my নিজস্ব HTML, যা কোনও ডোমেন নির্দিষ্ট ভাষার উদ্দেশ্য।

শেষ পর্যন্ত, প্রতিটি গ্লোবাল বা ভাগ করা মান প্রতিটি ডিওএমের নির্দেশের একচেটিয়া অনুরোধের (যেমন বিচ্ছিন্ন সুযোগের সাথে প্রয়োজনীয় হিসাবে) একাধিক বৈশিষ্ট্যের সাথে শৃঙ্খলে নেমে যাওয়া খুব অদ্ভুত। এটি ডম-এ সমস্ত বার বার লিখতে বোবা দেখায় এবং এগুলি ভাগ করা বস্তু হলেও এমনকি এটি অদৃশ্য বোধ করে। এটি অযথা নির্দেশিকা ঘোষণাকে জটিল করে তোলে ates নির্দেশক এইচটিএমএল থেকে "পৌঁছনো" এবং মান দখল করতে $ পিতামাতার ব্যবহারের কাজটি খুব খারাপ ফর্মের মতো মনে হয়।

আমিও খুব অল্প বিচ্ছিন্নভাবে বেশিরভাগ শিশুদের স্কোপ নির্দেশনা রাখতে আমার অ্যাপ্লিকেশনটি পরিবর্তন করেছি simple কেবলমাত্র যাদের সহজ, অ-পুনরাবৃত্ত বৈশিষ্ট্যগুলির মধ্য দিয়ে পাস করা যেতে পারে তার চেয়ে বেশি কিছু পিতামাতার কাছ থেকে অ্যাক্সেস করার প্রয়োজন হয় না।

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

- ডি

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