ध्यान देने वाली एक बात यह है कि ngModel को काम करने के लिए आवश्यक है ... ध्यान दें कि ng-model="blah"
जो कह रहा है "चयनित मान के लिए $ गुंजाइश ।blah सेट करें"।
इसे इस्तेमाल करे:
<select ng-model="blah" ng-options="item.ID as item.Title for item in items"></select>
यहाँ AngularJS के प्रलेखन से अधिक है (यदि आपने इसे नहीं देखा है):
सरणी डेटा स्रोतों के लिए:
- सरणी में मान के लिए लेबल
- सरणी में मान के लिए लेबल के रूप में चुनें
- सरणी में मान के लिए समूह द्वारा लेबल समूह = सरणी में मान के लिए समूह द्वारा लेबल समूह के रूप में चयन करें
ऑब्जेक्ट डेटा स्रोतों के लिए:
- ऑब्जेक्ट में (कुंजी, मान) के लिए लेबल
- ऑब्जेक्ट में (कुंजी, मान) के लिए लेबल के रूप में चुनें
- ऑब्जेक्ट में समूह (कुंजी, मान) के लिए समूह द्वारा लेबल करें
- ऑब्जेक्ट में समूह (कुंजी, मान) के लिए लेबल समूह के रूप में चुनें
AngularJS में विकल्प टैग मूल्यों पर कुछ स्पष्टीकरण के लिए:
जब आप उपयोग करते हैं ng-options
, तो एनजी-ऑप्शंस द्वारा लिखे गए ऑप्शन टैग्स का मान हमेशा ऑप्शन आइटम से संबंधित ऐरे आइटम का सूचकांक होगा । ऐसा इसलिए है क्योंकि एंगुलरजेएस वास्तव में आपको चुनिंदा नियंत्रणों के साथ संपूर्ण वस्तुओं का चयन करने की अनुमति देता है, न कि केवल आदिम प्रकार के। उदाहरण के लिए:
app.controller('MainCtrl', function($scope) {
$scope.items = [
{ id: 1, name: 'foo' },
{ id: 2, name: 'bar' },
{ id: 3, name: 'blah' }
];
});
<div ng-controller="MainCtrl">
<select ng-model="selectedItem" ng-options="item as item.name for item in items"></select>
<pre>{{selectedItem | json}}</pre>
</div>
उपरोक्त आपको $scope.selectedItem
सीधे संपूर्ण ऑब्जेक्ट का चयन करने की अनुमति देगा । मुद्दा यह है, AngularJS के साथ, आपको इस बात की चिंता करने की आवश्यकता नहीं है कि आपके विकल्प टैग में क्या है। चलो AngularJS को संभालते हैं; आपको केवल इस बात का ध्यान रखना चाहिए कि आपके दायरे में आपके मॉडल में क्या है।
यहाँ ऊपर दिए गए व्यवहार को प्रदर्शित करने वाला एक प्लांटर है, और बाहर लिखा HTML दिखा रहा है
डिफ़ॉल्ट विकल्प से निपटना:
कुछ चीजें हैं जो मैं डिफ़ॉल्ट विकल्प से संबंधित ऊपर उल्लेख करने में विफल रहा हूं।
पहला विकल्प चुनना और खाली विकल्प हटाना:
आप ऐसा सरल जोड़कर कर सकते हैं ng-init
जो ng-model
आपके दोहराए जाने वाले आइटम में पहले तत्व से मॉडल (से ) सेट करता है ng-options
:
<select ng-init="foo = foo || items[0]" ng-model="foo" ng-options="item as item.name for item in items"></select>
नोट: यह थोड़ा पागल हो सकता है अगर foo
कुछ "मिथ्या" के लिए ठीक से शुरू किया जाए। उस स्थिति में, आप foo
अपने नियंत्रक के आरंभ को संभालना चाहेंगे , सबसे अधिक संभावना है।
डिफ़ॉल्ट विकल्प को अनुकूलित करना:
यह थोड़ा अलग है; यहां आपको केवल अपने चयन के एक बच्चे के रूप में एक विकल्प टैग जोड़ना है, एक खाली मूल्य विशेषता के साथ, फिर उसके आंतरिक पाठ को अनुकूलित करें:
<select ng-model="foo" ng-options="item as item.name for item in items">
<option value="">Nothing selected</option>
</select>
नोट: इस मामले में "खाली" विकल्प एक अलग विकल्प चुनने के बाद भी वहां रहेगा। यह AngularJS के तहत चयन के डिफ़ॉल्ट व्यवहार के लिए मामला नहीं है।
एक स्वनिर्धारित डिफ़ॉल्ट विकल्प जो चयन के बाद छुपाता है:
यदि आप चाहते थे कि आपका स्वनिर्धारित डिफ़ॉल्ट विकल्प आपके द्वारा किसी मान का चयन करने के बाद चला जाए, तो आप अपने डिफ़ॉल्ट विकल्प में एनजी-छिपाने की विशेषता जोड़ सकते हैं:
<select ng-model="foo" ng-options="item as item.name for item in items">
<option value="" ng-if="foo">Select something to remove me.</option>
</select>