2015-01-13 7 views
17

अब तक जारी किए गए कोणीय 2 पूर्वावलोकन में, मार्कअप का सिंटैक्स ng- उपसर्गों को स्क्वायर ब्रांड्स और स्क्वायर ब्रैकेट में संशोधित किया गया है।कोणीय 2: क्या माता-पिता/स्क्वायर ब्रैकेट का उपयोग अनिवार्य है?

एक से पहले

जबकि होगा:

<input ng-model="userName" /> 
<button ng-click="btnClick()">Run</button> 

नई वाक्य रचना है:

<input [value]="userName" /> 
<button (click)="btnClick()">Run</button> 

किसी को भी पता है इस वाक्य रचना है अगर/अनिवार्य हो जाएगा, और विकल्प के बिना?

वर्तमान में हमारे पास एक ऐसा एप्लिकेशन है जिसमें एचटीएमएल एक्सएसएलटी के माध्यम से उत्पन्न होता है, और [ और ( मान्य गुण नहीं हैं - जिससे कोणीय 2 जेएस सिंटैक्स उत्पन्न करने में असमर्थता हो रही है।

+0

आप जानते हैं कि कोणीय 2.0 कम से कम एक वर्ष तक जारी नहीं किया जाएगा और यह वर्तमान में सक्रिय विकास में है। मुझे लगता है कि अब आप इस सवाल पूछने के लिए बंदूक कूद रहे हैं। –

+0

मैं सहमत हूं, इसके बारे में पूछना बहुत जल्दी है। जब मैं इस विषय पर इंटरनेट का शोध करता हूं तो मैं अपने उत्तर में अधिक संसाधन जोड़ना जारी रखूंगा। – divyenduz

+0

मैंने उन्हें एनजी-कॉन्फ के बाद सुना है कि यह अंतिम नहीं है। यह सिर्फ विचार का प्रदर्शन है और अंतिम रिलीज से बदल सकता है। क्योंकि बहुत से लोग इस से उलझन में थे। –

उत्तर

10

नहीं अनिवार्य: -

http://eisenbergeffect.bluespire.com/all-about-angular-2-0/

निर्देशों धारा (पृष्ठ के मध्य में के बारे में पास) चेकआउट करें: - "डेकोरेटर निर्देशक" अभी भी वहाँ है, के संबंध में है जिसका अर्थ है अपने सवाल।

निश्चित रूप से एक निश्चित तरीका होगा।

रूप में अच्छी तरह सरकारी demostration चेकआउट करते हैं, एनजी मॉडल/क्लिक के साथ-साथ उस में किया जाता है: -

https://www.youtube.com/watch?v=gNmWybAyBHI

43

वास्तव में, [] और () विशेषताओं में मान्य HTML वर्ण हैं। यदि आप सर्वर-साइड पर HTML कोड जेनरेट करते हैं या किसी भी अन्य प्री-प्रोसेसर का उपयोग करते हैं जो उन वर्णों को संभाल नहीं सकता है, तो आप हमेशा समकक्ष कैनोनिकल सिंटैक्स का उपयोग कर सकते हैं।

  • [], bind-* के लिए एक आशुलिपि है इसलिए [propertyName] == bind-property-name
  • (), on-* के लिए एक आशुलिपि है इसलिए (eventName) == on-event-name

इस वाक्य रचना मुख्य रूप से दो कारणों से (और वास्तव में अनिवार्य) की वजह से प्रयोग किया जाता है:

  • से बच - तत्व गुणों से बचने की आवश्यकता है। यदि आपके पास गतिशील src के साथ एक छवि टैग है: <img src="{{imageSource}}"> इसके परिणामस्वरूप 404 त्रुटि होगी, क्योंकि ब्राउज़र तुरंत दिए गए यूआरएल का अनुरोध करने का प्रयास करता है। उस विशेष पल में यूआरएल {{imageSource}} है जो निश्चित रूप से कोई मान्य यूआरएल नहीं है। इसलिए हमारे पास कोणीय 1 में ngSrc विशेषता है। हम इसे <img ng-src="{{imageSource}}"> जैसे उपयोग कर सकते हैं। यह क्या करता है, यह तब तक प्रतीक्षा करता है जब तक इंटरपोलेशन का मूल्यांकन और फिरsrc छवि को विशेषता देता है। यह सुनिश्चित करता है कि एसिंक्रोनस इंटरपोलेशन मूल्यांकन के कारण कोई गलत अनुरोध नहीं किया गया है। ng-href जैसे कुछ और निर्देश हैं जो इस पर सहायता करते हैं। अब, जब वेब घटक की बात आती है, तो विशेषता नाम अब निर्धारक नहीं हैं।वेब घटक अपने स्वयं के विशेषताओं को परिभाषित कर सकते हैं जिन्हें ढांचे के बारे में पता नहीं है। तो हमारे पास दो विकल्प हैं: हम या तो एस्केपिंग (ओह नोएस!) की आवश्यकता वाले प्रत्येक विशेषता के लिए निर्देश बनाते हैं, या हम एक अधिक सामान्य वाक्यविन्यास के साथ आते हैं जो कोणीय समझता है और फ्रेमवर्क को तदनुसार अवरुद्ध करता है। यही कारण है कि [propertyName] पेश किया गया है। फिर, यह सिर्फ एक शॉर्टकट है। यदि वह आपको सुइट नहीं करता है तो कैनोलिक सिंटैक्स का उपयोग करें।
  • संपत्ति बाध्यकारी - अब आप सोच सकते हैं कि क्यों [propertyName] और [attributeName] नहीं। यह पता चला है कि कस्टम तत्वों से निपटने के दौरान हम एक और समस्या में आते हैं, जो कोणीय के निर्देशक जीवन चक्र से अवगत नहीं हैं। कोणीय में, हम तय कर सकते हैं कि किसी तत्व के दायरे के लिए मूल्य कैसे बंधे हैं। तो इस कोड में: <my-directive foo="bar">, bar या तो बस स्ट्रिंग हो सकता है, या एक ऑब्जेक्ट जो दो-तरफा डेटा बाध्य है। हम केवल निर्देश के कार्यान्वयन को देखकर जानते हैं। हालांकि, वेब घटक और कस्टम तत्व बस एंगुलर के जीवन चक्र के बारे में नहीं जानते हैं। जिसका अर्थ है, एक विशेषता मान हमेशा एक स्ट्रिंग है, क्योंकि HTML में एक विशेषता है। यह सुनिश्चित करने के लिए कि हम अभी भी किसी भी तत्व के तारों की तुलना में अन्य मानों को पार कर सकते हैं, कोणीय 2 गुणों की बजाय तत्व गुणों के लिए बाध्य करता है। चूंकि किसी DOM तत्व की ऑब्जेक्ट पर कोई प्रॉपर्टी कुछ भी हो सकती है, केवल एक स्ट्रिंग नहीं। तो [] सिंटैक्स के साथ, हम एंगुलर को यह भी कहते हैं कि हम तत्व की संपत्ति से जुड़ना चाहते हैं, न कि इसकी विशेषता। इसका यह भी अर्थ है कि अब निर्देश/तत्व/वेबकंपोनेंट का उपभोक्ता यह तय करने का प्रभारी है कि मूल्य कैसे पास किया जाता है।

मैंने उस विषय को शामिल करने के बारे में article लिखा है, इसके अलावा ngeurope से एक बात भी है।

मुझे उम्मीद है कि यह चीजों को साफ़ कर देगा!

+0

हालांकि वे वैध HTML वर्ण हो सकते हैं, वे मान्य XML वर्ण नहीं हैं। जैसा कि सवाल में कहा गया है, आउटपुट एचटीएमएल एक्सएसएलटी के परिणामस्वरूप उत्पन्न किया जा रहा है और यहां तक ​​कि आउटपुट/@ मोड एचटीएमएल में भी, एक्सएसएलटी की सामग्री वैध एक्सएमएल होनी चाहिए। यह कहकर, मैं टिप्पणी के लिए धन्यवाद देता हूं क्योंकि यह वास्तव में बताता है कि नए ब्रैकेट/कोष्ठक वाक्यविन्यास का विकल्प क्या है - और यह विकल्प उपर्युक्त प्रतिपादन पाइपलाइन के साथ पूरी तरह से संगत है। –

+0

<इनपुट [(ngModel)] = "selectHero.name" प्लेसहोल्डर = "नाम" /> तो ट्यूटोरियल में इन उदाहरणों में से कुछ में दोनों ब्रैकेट क्यों हैं? –

+0

@ नेविन माधुकारक कोणीय में, दो-तरफा बाध्यकारी '[()] द्वारा दर्शाया गया है ' –

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