2014-09-15 14 views
11

मैं बहुत तरह गुंजाइश गुण परिभाषा कुछ निर्देश देखा है प्रश्न चिह्न ('?') का उपयोग:प्रश्न चिह्न

app.directive('userInfo', function() { 
     return { 
     restrict: 'A', 
     scope: {prop: '=?'}, 
     templateUrl: 'some/template/url', 
    }; 

मैं इसके लिए ध्यान दिया है और केवल लगता है कि मैंने देखा यह गया था: what's the meaning of '=?' in angularJS directive isolate scope declaration?। लेकिन यह उस तरीके से काम नहीं कर रहा है जिस तरह से वह वहां बताता है। मैं अपना आवेदन चलाने में सफल रहा हूं और कोई अपवाद नहीं फेंक दिया गया है।

क्या कोई इसके बारे में अधिक जानकारी दे सकता है?

+0

आपके आवेदन का कोड क्या है? अगर हम इसका कोड नहीं जानते तो हम कुछ भी कैसे समझा सकते हैं? –

+0

आपके द्वारा भेजे गए लिंक के मुताबिक, कोई अपवाद फेंकना नहीं चाहिए क्योंकि प्रश्न चिह्न परिभाषित स्कोप वेरिएबल 'प्रोप' वैकल्पिक बनाता है। – efeder

+0

मेरे मामले में मैंने '?' का उपयोग नहीं किया और कोई अपवाद फेंक दिया गया – Rivi

उत्तर

13

जोड़ नहीं आप करते तो ? और नहीं अपने तत्व पर एक prop संपत्ति डाल आप पर है, तो एक अपवाद फेंक दिया जाएगा निर्देश का उपयोग कर रहे हैं।

? जोड़ना, संपत्ति को वैकल्पिक के रूप में चिह्नित करता है। जैसा कि documentation for $compile में उल्लेख किया गया है:

आप इस व्यवहार से = = का उपयोग कर सकते हैं? या =? attr को संपत्ति को वैकल्पिक रूप से ध्वजांकित करने के लिए।

मुझे लगता है कि दस्तावेज उस क्षेत्र में थोड़ा पुराना हो सकता है। NON_ASSIGNABLE_MODEL_EXPRESSION केवल older revisions of the source में दिखाई देता है।

कृपया ध्यान दें कि अपवाद केवल तभी निकाला जाता है जब आप स्कोप प्रॉपर्टी पर लिखने का प्रयास करते हैं। मैंने इस मुद्दे को प्रदर्शित करने के लिए एक त्वरित प्लंकर फेंक दिया: http://plnkr.co/edit/hjUq6ZisuRG2C3mZpRDj?p=preview

+0

हाँ, मुझे मिल गया। यह सवाल कठिन नहीं था। मेरी समस्या यह है कि जब मैं '?' का उपयोग नहीं कर रहा हूं और तत्व में 'प्रोप' संपत्ति का उपयोग नहीं करते, कोई अपवाद नहीं फेंक दिया जाता है। इसलिए मैंने सोचा कि '?' के उपयोग के लिए एक अलग स्पष्टीकरण है – Rivi

+0

@ user1857251 मैंने अपना जवाब अपडेट किया। उम्मीद है कि अब यह और अधिक सहायक है :) –

+0

हाँ, मुझे लगता है कि दस्तावेज पुराना है। मैंने कोशिश की है और जैसा आपने कहा - जब आप स्कोप प्रॉपर्टी के मूल्य को बदलने की कोशिश कर रहे हैं तो अपवाद है क्योंकि यह अपरिभाषित है (यदि आपने '?' का उपयोग नहीं किया है)। धन्यवाद! – Rivi

संबंधित मुद्दे