2013-09-03 14 views
61

में रेडियो बटन के लिए काम नहीं कर रहा है, मैं कोणीय के लिए नया हूं और मैं रेडियो बटन के मूल्य को प्राप्त करने का प्रयास कर रहा हूं जिसे उपयोगकर्ता ने एनजी-मॉडल का उपयोग करके चुना है। लेकिन मुझे "चयनित संपर्क" में कोई आउटपुट नहीं मिल रहा है।एनजी-मॉडल AngularJS

यहाँ मेरी HTML है

<!doctype html> 
<html ng-app> 
    <head> 
    <script src="http://code.angularjs.org/1.2.0rc1/angular.min.js"></script> 
    <script src="script.js"></script> 
    </head> 
    <body> 
    <form name="myForm" ng-controller="Ctrl"> 
     <table border="0"> 
       <th>Contact Type</th> 
       <tr ng-repeat="contact in contacttype"><td> 
       <input type="radio" ng-model="contactname" name="group1" value="{{contact.name}}">{{contact.name}}     
       </td>    
      </td></tr></table> 
     <tt>selected contact = {{contactname}}</tt><br/> 
    </form> 
    </body> 
</html> 

नीचे मेरी main.js

function Ctrl($scope) { 
    $scope.contacttype = [ 
          {name: 'Both' }, 
          {name: 'User'}, 
          {name: 'Admin'} 
          ]; 
} 

क्या मैं गलत कर रहा हूँ यहाँ है? पता लगाने में सक्षम नहीं है !!!

उत्तर

105

क्योंकि ng-repeat अपना खुद का दायरा बनाता है और आप जो करने की कोशिश कर रहे हैं वह बच्चे के दायरे से मूल दायरे के लिए मूल्य असाइन करता है। तो तुम

<input type="radio" ng-model="$parent.contactname" name="group1" value="{{contact.name}}"> 
+0

मेरे पास ऊपर की तरह एक चेकबॉक्स कार्यक्षमता है (ng-repeat के साथ, main.js में scope.objects से मान)। <इनपुट प्रकार = "चेकबॉक्स" ng-model = "tierchecked" name = "tier_class" ng-check = "item.checked"

+0

@Shrey चेकबॉक्स के लिए आपको प्रत्येक बॉक्स में एक अलग मॉडल को बांधना होगा, यह रेडियो बटन समूह की तरह नहीं है क्योंकि रेडियो बटन समूह केवल एक को चुनने की अनुमति देता है। आप कर सकते हैं (मान लें कि आप संपर्कों में संपर्क के माध्यम से लूप) '<इनपुट प्रकार =" चेकबॉक्स "एनजी-मॉडल =" contact.checked "name =" tier_class "/>', इसलिए प्रत्येक संपर्क को 'चेक' नामक फ़ील्ड असाइन किया जाएगा जब बॉक्स चेक किया जाता है। – zsong

+1

[AngularJS में चेकबॉक्स कैसे करें पर एक और सवाल] (http://stackoverflow.com/questions/14514461/how-can-angularjs-bind-to-list-of-checkbox-values) – Blazemonger

5

तो मैं इस एक ही समस्या और एनजी-मॉडल के साथ $ माता-पिता का उपयोग कर काम करने प्रकट नहीं किया था था कर सकते हैं। मेरी समस्या यह थी कि मेरे पास चेकबॉक्स के समूह थे लेकिन उनमें से प्रत्येक के लिए समान नाम विशेषता का उपयोग किया गया था। यह पिछले समूह में डिफ़ॉल्ट चेक किए गए रेडियो बटन को छिपाने के लिए समाप्त हो गया।

सुनिश्चित करें कि आप प्रत्येक विशिष्ट समूह के लिए अलग-अलग नाम विशेषताओं का उपयोग कर रहे हैं।

+0

एक ही समस्या थी धन्यवाद @ जोश सी – Nexus23

1

var app = angular.module('myApp', []); 
 
app.controller('formCtrl', function($scope) { \t 
 
\t 
 
\t $scope.devices = [{ 
 
\t \t nameD: "Device 1" 
 
\t \t }, { 
 
\t \t nameD: "Device 2" 
 
\t \t }, { 
 
\t \t nameD: "Device 3" 
 
\t \t }, { 
 
\t \t nameD: "Device 4" 
 
\t }]; 
 
\t 
 
});
<!DOCTYPE html> 
 
<html> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> 
 
<script src="app-controller-r.js"></script> 
 
<body> 
 
<div ng-app="myApp" ng-controller="formCtrl"> 
 
<form> 
 
<ul> 
 
    <li ng-repeat="device in devices"> 
 
\t <label>{{device.nameD}} \t 
 
     <input type="radio" ng-model="$parent.deviceType" value="{{device.nameD}}" />  
 
\t </label> 
 
    </li> 
 
</ul> 
 
<button>Submit</button> 
 
</form> 
 
{{deviceType}} 
 
</div> 
 
</body> 
 
</html>

1

यदि आप निर्देश कई बार उपयोग कर रहे हैं और आप for और id लेबल के साथ प्रयोग कर रहे हैं ... के लिए एक संदर्भ का उपयोग सुनिश्चित करें गुंजाइश के $id

<li ng-repeat='add_type in types'> 
    <input id="addtester_{{ add_type.k }}_{{ $parent.$id }}" type="radio" ng-model="$parent.addType" ng-value='add_type.k' class="tb-form__input--custom"/
    <label for="addtester_{{ add_type.k }}_{{ $parent.$id }}">{{ add_type.v }}</label> 
</li> 

अन्यथा आप एक ही इनपुट साझा करने के निर्देश दिए गए होंगे और संभवतः ऐसा प्रतीत होता है जैसे काम नहीं कर रहा है।

+0

यह मेरे लिए धन्यवाद है धन्यवाद! –