जवाबों:
'आइसोलेटेड' स्कोप एक ऑब्जेक्ट हैश लेता है जो मूल स्कोप से निकले स्थानीय स्कोप गुण के एक सेट को परिभाषित करता है। ये स्थानीय गुण टेम्प्लेट के लिए मूल्यों को अलग करने के लिए उपयोगी हैं। स्थानीय परिभाषा इसके स्रोत के लिए स्थानीय गुंजाइश संपत्ति का एक हैश है:
=
या=attr
- एक स्थानीय स्कोप प्रॉपर्टी औरattr
विशेषता के मूल्य के माध्यम से परिभाषित नाम की पैतृक स्कोप प्रॉपर्टी के बीच द्वि-दिशात्मक बाइंडिंग सेट करें । यदि कोईattr
नाम निर्दिष्ट नहीं है, तो विशेषता नाम को स्थानीय नाम के समान माना जाता है। दिया<widget my-attr="parentModel">
और विजेट की परिभाषाscope: { localModel:'=myAttr' }
, तो विजेट गुंजाइश संपत्ति मूल गुंजाइश परlocalModel
मूल्य को प्रतिबिंबित करेगाparentModel
। किसी भी परिवर्तन कोparentModel
परिलक्षित किया जाएगाlocalModel
और किसी भी परिवर्तनlocalModel
को प्रतिबिंबित करेगाparentModel
। यदि पैरेंट स्कोप प्रॉपर्टी मौजूद नहीं है, तो यह एक NON_ASSIGNABLE_MODEL_EXPRESSION अपवाद को फेंक देगा। आप इस व्यवहार का उपयोग कर से बचने कर सकते=?
या=?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]);
}
}