angularjs - '=?' का अर्थ क्या है कोणीय जेएस निर्देश में दायरे की घोषणा अलग है?





angularjs-directive (2)


Yes:

'पृथक' दायरा एक ऑब्जेक्ट हैश लेता है जो मूल दायरे से प्राप्त स्थानीय स्कोप गुणों का एक सेट परिभाषित करता है। ये स्थानीय गुण टेम्पलेट्स के लिए मूल्यों को अलियासिंग के लिए उपयोगी हैं। स्थानीय परिभाषा स्थानीय स्रोत संपत्ति का हैश अपने स्रोत के लिए है:

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

क्या बराबर के बाद प्रश्न चिह्न का विशेष अर्थ है? अर्थात:

scope: {foo: '=?'}

क्या उपर्युक्त मतलब है 'अगर फू' को हल नहीं किया जा सकता है तो त्रुटि न बढ़ाएं?




मैं उमर से सहमत हूं। सिद्धांत रूप में, अलग-अलग स्कोप अद्भुत और "पोर्टेबल" लगते हैं, लेकिन मेरे ऐप को गैर-तुच्छ कार्यक्षमता को शामिल करने के लिए मुझे कई निर्देशों को शामिल करने की ज़रूरत होती है (कुछ दूसरों के अंदर घोंसला या उनमें विशेषताओं को जोड़ना) ताकि पूरी तरह से मेरे लिखने के लिए अपने एचटीएमएल, जो एक डोमेन विशिष्ट भाषा का उद्देश्य है।

अंत में, निर्देश के प्रत्येक डीओएम आमंत्रण (जैसा कि अलग-अलग दायरे के साथ आवश्यक है) पर कई विशेषताओं के साथ श्रृंखला के नीचे हर वैश्विक या साझा मूल्य को पार करना बहुत अजीब है। यह सिर्फ डीओएम में बार-बार लिखने के लिए गूंगा दिखता है और यह अक्षम होता है, भले ही ये साझा वस्तुएं हों। यह निर्देशों की घोषणाओं को अनावश्यक रूप से जटिल करता है। $ माता-पिता का उपयोग करने के लिए "पहुंचने" और निर्देश एचटीएमएल से मूल्यों को पकड़ने का कामकाज बहुत खराब रूप जैसा लगता है।

मैं भी, अपने ऐप को बहुत कम अलगाव के साथ अधिकतर बच्चे के दायरे निर्देशों को बदलने के लिए घायल हो गया - केवल उन लोगों को जिन्हें माता-पिता से कुछ भी आसान, गैर-दोहराव वाले गुणों के माध्यम से पारित करने की आवश्यकता नहीं है।

इस तरह की बात होने से दशकों तक डोमेन विशिष्ट भाषाओं के सपने का सपना देखने के बाद, मुझे उत्साहित किया गया है कि एंगुलरजेएस इस विकल्प को प्रदान करता है और मुझे पता है कि, इस क्षेत्र में अधिक देव काम करते हैं, हम कुछ बहुत अच्छे ऐप्स देखने जा रहे हैं उनके आर्किटेक्ट्स को लिखना, विस्तार करना और डीबग करना भी आसान है।

- डी





angularjs angularjs-directive