উত্তর:
'বিচ্ছিন্ন' স্কোপটি একটি অবজেক্ট হ্যাশ নেয় যা প্যারেন্ট স্কোপ থেকে প্রাপ্ত স্থানীয় স্কোপ বৈশিষ্ট্যের একটি সেটকে সংজ্ঞায়িত করে। এই স্থানীয় বৈশিষ্ট্যগুলি টেমপ্লেটগুলির জন্য মানগুলি aliasing করার জন্য দরকারী। স্থানীয় সংজ্ঞা তার উত্সটিতে স্থানীয় স্কোপ সম্পত্তির একটি হ্যাশ:
=
বা=attr
- স্থানীয় স্কোপ সম্পত্তি এবংattr
অ্যাট্রিবিউটের মান দ্বারা সংজ্ঞায়িত নামের পিতামাতার স্কোপ সম্পত্তির মধ্যে দ্বি-দিকনির্দেশক বাঁধাই সেট আপ করুন । যদি কোনওattr
নাম নির্দিষ্ট না করা থাকে তবে বৈশিষ্ট্যটির নামটি স্থানীয় নামের মতোই ধরে নেওয়া হয়। প্রদত্ত<widget my-attr="parentModel">
এবং উইজেটের সংজ্ঞা দেওয়া হয়েছেscope: { localModel:'=myAttr' }
, তারপরে উইজেটের স্কোপ সম্পত্তিটি পিতামাতার স্কোপেরlocalModel
মান প্রতিফলিত করবেparentModel
। যে কোনও পরিবর্তনparentModel
প্রতিফলিত হবেlocalModel
এবং যে কোনও পরিবর্তনlocalModel
প্রতিফলিত হবেparentModel
। যদি প্যারেন্ট স্কোপ সম্পত্তিটি না থাকে তবে এটি একটি NON_ASSIGNABLE_MODEL_EXPPressION ব্যতিক্রম ছুঁড়ে দেবে। Using চ্ছিক হিসাবে সম্পত্তিটিকে পতাকাঙ্কিত করতে=?
বা ব্যবহার করতে এই আচরণটি এড়াতে পারেন=?attr
।
স্কোপ সম্পত্তিকে প্রভাবিত করে এমন প্রতিটি ডাইজেস্টে এটি প্রত্যাশিত ত্রুটিটি ট্রিগার করা উচিত:
parentSet = parentGet.assign || function() {
// reset the change, or we will throw this exception on every $digest
lastValue = scope[scopeName] = parentGet(parentScope);
throw Error(NON_ASSIGNABLE_MODEL_EXPRESSION + attrs[attrName] +
' (directive: ' + newScopeDirective.name + ')');
};
//...
if (parentValue !== scope[scopeName]) {
// we are out of sync and need to copy
if (parentValue !== lastValue) {
// parent changed and it has precedence
lastValue = scope[scopeName] = parentValue;
} else {
// if the parent can be assigned then do so
parentSet(parentScope, lastValue = scope[scopeName]);
}
}