2012-08-24 9 views
57

मैं AngularJS के बारे में सीख रहा हूँ और यह देखना है कि और न ही डेटा के साथ शुरू न मानक html टैग कर रहे हैं जिम्मेदार बताते हैं, इस तरह अपनी ही विशेषताओं में से कुछ कहते हैं:AngularJS टैग विशेषताओं

<html ng-app> 

या इस:

<body ng-controller="PhoneListCtrl"> 

इन एनजी- * गुण कहां से आते हैं और यह एक वैध HTML है? मैं इसके बारे में और कहां पढ़ सकता हूं?

उत्तर

51

इन अतिरिक्त विशेषताओं को कड़ाई से बोलने से HTML विनिर्देशों में परिभाषित नहीं किया गया है, वैध HTML नहीं हैं। आप कह सकते हैं कि AngularJS HTML विनिर्देश के सुपरसैट प्रदान करता है और पार्स करता है।

हालांकि, v1.0.0rc1 के रूप में, आप डेटा- * विशेषताओं का उपयोग कर सकते हैं, उदाहरण के लिए <html data-ng-app>, जो मुझे विश्वास है, वैध HTML5 हैं। Source

AngularJS Compiler पर एक गाइड है जिसमें प्रक्रिया पर कुछ और जानकारी है। संक्षेप में; AngularJS कंपाइलर आपके एचटीएमएल पेज को पढ़ता है, इन गुणों का उपयोग करके इसे मार्गदर्शन करने के लिए, यह जावास्क्रिप्ट और एचटीएमएल डोम के माध्यम से लोड होने के बाद, आपके पृष्ठ को संपादित और अपडेट करता है।

+2

बस यह स्पष्ट छोड़ने के लिए, ** हाँ **, 'डेटा-एक्स' एचटीएमएल 5-अनुरूप है, क्योंकि 'डेटा-' उपसर्ग कस्टम विशेषताओं के लिए है। – WhyNotHugo

8

जहां इन ng- * विशेषताएं

आ मुख्य ng module से कर से। Source code

क्या यह एक वैध HTML है?

नहीं। लेकिन विशेषता-शैली निर्देशों को एक्स-या डेटा के साथ प्रीफ़िक्स किया जा सकता है- इसे HTML सत्यापनकर्ता अनुपालन करने के लिए। direcives documentation देखें।

27

डॉक्स से: http://docs.angularjs.org/guide/directive

<!doctype html> 
<html data-ng-app> 
    <head> 
    <script src="http://code.angularjs.org/1.0.7/angular.min.js"></script> 
    <script src="script.js"></script> 
    </head> 
    <body> 
    <div data-ng-controller="Ctrl1"> 
     These are all valid directive declarations:<br/> 
     <input ng-model='name'> <hr/> 
     <span ng:bind="name"></span> <br/> 
     <span ng_bind="name"></span> <br/> 
     <span ng-bind="name"></span> <br/>   
     <span x-ng-bind="name"></span> <br/> 
     <span data-ng-bind="name"></span> <br/> 
    </div> 
    </body> 
</html> 

मैं data-*whatever* घोषणा सबसे ज्यादा पसंद के रूप में यह HTML5 संगत है।

तो मेरी कोणीय घोषणा (जैसे ng-controller, ng-app, ng-repeat आदि) या कस्टम निर्देशों से किसी के लिए मैं हमेशा data- के साथ उन्हें उपसर्ग जाएगा।

-1

एक और विकल्प अपरिभाषित विशेषता नामों को अनदेखा करना है। यदि आप एक्लिप्स का उपयोग कर रहे हैं, तो आप प्रोजेक्ट properties>>validation>>html syntax>>attributes>>ignore undefined attribute names पर जाकर इसे सेट कर सकते हैं।

+1

हालांकि यह उपयोगी है, यह सवाल का जवाब नहीं दे रहा है ... –