2013-12-11 6 views
6

भीतर कोणीय मान उपयोग नहीं कर सकते क्यों यह काम नहीं करता:उद्धरण

<ul class="dropdown-menu"> 
    <li ng-repeat="choice in dropDownItems"> 
    <a class="btn" ng-click="mnuClick('{{choice}}')">{{choice}}</a> 
    </li> 
</ul> 

लेकिन यह काम करता है:

<ul class="dropdown-menu"> 
    <li ng-repeat="choice in dropDownItems"> 
    <a class="btn" ng-click="mnuClick('xxx')">{{choice}}</a> 
    </li> 
</ul> 

शीर्ष उदाहरण में, mnuClick() दिनचर्या कहा जाता हो जाता है कभी नहीं है, लेकिन में नीचे उदाहरण, यह करता है। जब मैं 'निरीक्षण तत्व' करता हूं तो सब ठीक दिखता है।

+0

अंदर भाव आप डबल घुंघराले ब्रेसिज़ जरूरत नहीं है। http://stackoverflow.com/questions/17878560/difference-between-double-and-single-curly-brace-in-angular-js। एसपीईसी द्वारा इसका –

उत्तर

7

यह काम नहीं करता है, क्योंकि जिस तरह से आपने यह किया है, आप कह रहे हैं कि आप स्ट्रिंग {{choice}}mnuClick फ़ंक्शन पर स्ट्रिंग प्रदान करना चाहते हैं।

xxx प्रदान करते समय, यह वास्तव में सही है, इसलिए आपको उद्धरणों की आवश्यकता है।

लेकिन जब {{choice}} उपयोग कर, आप नहीं चाहते कि कि स्ट्रिंग, लेकिन आप चाहते हैं कि अभिव्यक्ति का मूल्यांकन किया जाना और उसके परिणाम (जो शायद एक स्ट्रिंग है) एक पैरामीटर के रूप - इसलिए आप उद्धरण की जरूरत नहीं है (और यहां तक ​​कि घुंघराले ब्रेसिज़ भी नहीं) यहां।

तो बस लिखने

<a class="btn" ng-click="mnuClick(choice)">{{choice}}</a> 

और आप ठीक :-) कर रहे हैं।

इसे छोटा करने के लिए: एक मामले में आप एक अभिव्यक्ति से निपटते हैं जो स्ट्रिंग को हल करता है, दूसरे मामले में आप सीधे स्ट्रिंग से निपटते हैं। इसलिए एक बार आपको कोट्स की आवश्यकता नहीं होती है, दूसरी बार जब आप करते हैं।

आप जब घुंघराले ब्रेसिज़ और जब उपयोग करने के लिए नहीं, this answer की जाँच इस सवाल का अधिक विस्तृत जानकारी चाहते हैं: Difference between double and single curly brace in angular JS?

आशा इस मदद करता है।

पुनश्च: अपने a टैग के पाठ के अंदर, आप जरूरत डबल घुंघराले-ब्रेसिज़, जैसा कि आप एक AngularJS नियंत्रित कोड ब्लॉक यहाँ में नहीं कर रहे हैं - इसलिए आप इसे के रूप में बाध्यकारी चिह्नित करने के लिए, यह है अन्यथा ' डी सिर्फ HTML के अंदर पाठ हो।

2

एनजी-क्लिक का मान एक कोणीय अभिव्यक्ति के रूप में व्याख्या किया जाता है, इसलिए आपको "पसंद" के चारों ओर घुंघराले ब्रैकेट का उपयोग करने की आवश्यकता नहीं है। बस इसे इस तरह लिखें:

<a class="btn" ng-click="mnuClick(choice)">{{choice}}</a> 
0

क्या यह काम नहीं करता है?

ng-click="mnuClick(choice)" 

मैं निश्चित रूप से समय की उन पंक्तियों के बहुत सारे के साथ कुछ किया है, लेकिन सत्यापित करने के लिए सौंपने के लिए कोड की जरूरत नहीं है ...