2014-09-19 6 views
9

में चयन के लिए एनजी मॉडल के रूप में आईडी मुझे टैग के चयनित आइटम के विकल्प मान का आईडी मान नहीं मिल रहा है।आईडी एंजुलरज

<div ng-controller="UserCreationCtrl"> 
    <form novalidate="novalidate" class="form-horizontal"> 
     <div class="control-group"> 
      <label class="control-label" for="inputFirstName">First name:</label> 

      <div class="controls"> 
       <input type="text" id="inputFirstName" ng-model="doctor.firstName" placeholder="First name"/> 
      </div> 
     </div> 

     <div> 
      <span class="nullable"> 
       <select ng-model="user.lookupId" ng-options="select as speciality.lookupName for speciality in specialityList" ng-change="selectedSpecilaty()"> 
        <option value="">-- choose speciality --</option> 
       </select> 
      </span> 
     </div> 
    </form> 
</div> 

मेरे नियंत्रक

app.controller('UserCreationCtrl', ['$scope', 
    function ($scope) { 

    $scope.specialityList = [ 
           {lookupId : 1, lookupName: 'speciality1'}, 
           {lookupId : 2, lookupName: 'speciality2'}, 

           {lookupId : 4, lookupName: 'speciality6'}, 
           {lookupId : 3, lookupName: 'speciality3'} 
           ]; 

    $scope.user = {firstName: 'first name value', lookupId : 4}; 

    $scope.selectedSpecilaty = function() 
    { 
     alert($scope.user.lookupId); 
    } 
}]);  

मैं यह कैसे कर सकते। अलर्ट बॉक्स को मान को 'अपरिभाषित' के रूप में अस्वीकार कर दिया गया है।

उत्तर

21

ng-options पैटर्न शुरू करने के लिए भ्रमित हो सकते हैं, क्योंकि काफी गुच्छा हैं।

आप क्या लिखा था अभी का अर्थ है:

select  as  speciality.lookupName for speciality in specialityList 
^-- the value to set to ^-- what to display  ^-- iteree name ^-- iterables 

तो चर आप अभिव्यक्ति में उपलब्ध है everythin आप गुंजाइश पर परिभाषित किया है कर रहे हैं, और प्रासंगिक specialty चर। जब आप कुछ चुनते हैं तो यह select पर असाइन करेगा, जो वास्तव में undefined है।

क्या आप देख रहे हैं

ng-options="speciality.lookupId as speciality.lookupName for speciality in specialityList" 

है इस का मान सेट होगा क्या ng-model करने की ओर इशारा करते है प्रासंगिक specialty के lookupId

+1

यह वही काम कर रहा है जो मुझे धन्यवाद चाहिए। –

+1

मेरे मामले में (कोणीय 1.2.15) मेरे पास अभिव्यक्ति सही थी, लेकिन मैं अनावश्यक रूप से अंत में "ट्रैक द्वारा" अभिव्यक्ति का उपयोग कर रहा था, जो स्पष्ट रूप से इसे तोड़ता है और मॉडल को मूल्य/आईडी के बजाय संपूर्ण वस्तु को ट्रैक करने का कारण बनता है आप चुन रहे हैं यह आंशिक रूप से अनुपलब्ध दस्तावेज के कारण है और संभवतः कोणीय के नए संस्करणों में सुधार किया गया है; गिटहब समस्या देखें: https://github.com/angular/angular.js/issues/6564। –

+0

ngOptions पर आधिकारिक दस्तावेज ngModel पर निर्धारित मान को परिभाषित करने के लिए 'as' के उपयोग के बारे में बहुत अस्पष्ट है। अधिक स्पष्ट ब्रो सोचने के लिए धन्यवाद! :) –

3

आप select कुंजी को संदर्भित करता है बदलना होगा value कुंजी आपके ng-options में निर्दिष्ट है। चूंकि आपका value कुंजी विशेषता है तो साथ अपने ng-model को user.lookupId बाध्य करने के लिए वर्तमान में चयनित विकल्प के lookupId, आप बदलने के लिए चयन किया हैspecialty.lookupId

को तो अपने select'sng-options होना चाहिए:

<select ng-model="user.lookupId" ng-options="speciality.lookupId as speciality.lookupName for speciality in specialityList" ng-change="selectedSpecilaty()"> 
    <option value="">-- choose speciality --</option> 
</select> 
+0

यह उपर्युक्त जैसा ही है। काम कर रहे। धन्यवाद। –