2016-02-09 11 views
7

सेट करने के लिए ng-repeat के साथ काम नहीं करता है, मैं विकल्प विकल्पों का डिफ़ॉल्ट मान सेट करने का प्रयास कर रहा हूं, मैं चयन और ng-repeat का उपयोग कर रहा हूं। मुझे जेएस फ़ाइल में डेटा मिलता है और मैं वहां मूल्य सेट करने के लिए कॉल मॉडल करता हूं।एनजी-चयनित डिफ़ॉल्ट मान

कृपया नीचे दिए गए कोड के लिए एक नजर है:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="UTF-8"> 
    <title>Example - example-ngrepeat-select-production</title> 


    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-rc.2/angular.min.js"></script> 
    <script src="app.js"></script> 



</head> 
<body ng-app="ngrepeatSelect"> 
    <div ng-controller="ExampleController"> 
    <form name="myForm"> 
    <label for="repeatSelect"> Repeat select: </label> 
    <select ng-model="datamodel"> 
     <option ng-repeat="dataitem in data" 
       ng-selected ="{{dataitem == datamodel}}">{{dataitem}}</option> 
    </select> 
    </form> 
    <hr> 
    <tt>repeatSelect = {{datamodel}}</tt><br/> 
</div> 
</body> 
</html> 

app.js फ़ाइल

(function(angular) { 
    'use strict'; 
angular.module('ngrepeatSelect', []) 
    .controller('ExampleController', ['$scope', function($scope) { 
    $scope.data = [1,2,3,4,5]; 

    $scope.datamodel = 2; 
}]); 
})(window.angular); 

यहाँ है मेरी plunker

उत्तर

9
से angular docs

:

ध्यान दें किngOptions के बिना उपयोग किए गए एक चुनिंदा निर्देश का मान हमेशा एक स्ट्रिंग है। जब मॉडल को गैर-स्ट्रिंग मान से बाध्य करने की आवश्यकता होती है, तो आपको या तो निर्देश का उपयोग करके इसे स्पष्ट रूप से रूपांतरित करना होगा (नीचे उदाहरण देखें) या विकल्पों के सेट को निर्दिष्ट करने के लिए ngOptions का उपयोग करें। यह है क्योंकि एक विकल्प तत्व केवल पर स्ट्रिंग मानों के लिए बाध्य हो सकता है।

तो $scope.datamodel = 2; से $scope.datamodel = '2'; काम बदल रहा है। अद्यतन plunker देखें।

हालांकि, इसके बजाय ngOptions का उपयोग करना बेहतर है। फिर, डॉक्स से:

कई मामलों में, ngRepeat ngOptions के बजाय <option> तत्वों पर इस्तेमाल किया जा सकता एक समान परिणाम प्राप्त करने के। हालांकि, ngOptions अतिरिक्त प्रत्येक के लिए एक नई गुंजाइश नहीं बनाने के द्वारा स्मृति को कम करने और गति बढ़ाने में इस तरह कैसे <select> के मॉडल समझ अभिव्यक्ति के हिस्से के रूप चयन के माध्यम से असाइन किया गया है में और अधिक लचीलापन, और रूप कुछ लाभ प्रदान करता है बार-बार उदाहरण

तो एक पूर्णांक के रूप में अपने मॉडल रखने के लिए, यदि आप इसके बजाय का उपयोग कर सकते हैं:

<select ng-model="datamodel" ng-options="dataitem for dataitem in data"> 
    <option value="">Please Select</option> 
</select> 

plunker

+0

यह काम करता है देखें! बहुत बढ़िया ! मैं सिर्फ स्ट्रिंग और सभी सेट में पूर्णांक को परिवर्तित करता हूं। – FShah

+0

मैं अधिकतम संख्या को डिफ़ॉल्ट मान के रूप में सेट करने की कोशिश कर रहा हूं लेकिन .js फ़ाइल से नहीं, इसलिए मैं ng-repeat का उपयोग कर रहा हूं। यहां लिंक है: (http://plnkr.co/edit/zJbQTVPaErP2dKe5gUXv?p=preview) – FShah

+0

@FShah लगता है कि आप अभी भी 'एनजी-विकल्प' का उपयोग कर सकते हैं, क्या आप अपना प्लंकर दिखाने के लिए अपना मतलब बता सकते हैं? यदि सूची को न्यूनतम से अधिकतम – user2718281

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