2013-04-28 11 views
17

मेरे पास 2 ए मान हैं जो मुझे सर्वर ए और बी से मिलता है। मैं एक समय में केवल एक ही सत्य रख सकता हूं।रेडियो बटन नॉकआउटज

फिर मुझे जो चाहिए वह रेडियो में से एक है ताकि एक बार वास्तविक मूल्य हो।

var viewModel = { 
 
    radioSelectedOptionValue: ko.observable("false"), 
 
    A: ko.observable("false"), 
 
    B: ko.observable("false") 
 
}; 
 
ko.applyBindings(viewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/2.1.0/knockout-min.js"></script> 
 
<div class='liveExample'>  
 
     <h3>Radio View model</h3> 
 
     <table> 
 
     <tr> 
 
      <td class="label">Radio buttons:</td> 
 
      <td> 
 
       <label><input name="Test" type="radio" value="True" data-bind="checked: A" />Alpha</label> 
 
       <label><input name="Test" type="radio" value="True" data-bind="checked: B" />Beta</label> 
 
      </td> 
 
     </tr> 
 
    </table> 
 
    A-<span data-bind="text: A"></span> 
 
    B-<span data-bind="text: B"></span> 
 
</div>

+0

अपडेट किया गया: http://jsfiddle.net/hamsaya/cyBQH/2/ – NoviceDeveloper

+0

यह एक और अद्भुत जवाब है: http://stackoverflow.com/a/20080917/683157 – kuboon

उत्तर

25

checked बाध्यकारी रेडियो बटन और चेक बॉक्स के लिए अलग तरह से काम करता है:

documentation से:

रेडियो बटन के लिए, KO तत्व सेट हो जाएगा जाँच की जानी यदि और केवल यदि पैरा मीटर मान रेडियो बटन नोड के value विशेषता के बराबर है। तो, आपका पैरामीटर मान स्ट्रिंग होना चाहिए।

तो आप अपने आदानों की value विशेषता को "ए" और "बी" सेट और फिर radioSelectedOptionValue जो 'ए' या 'बी', जिस पर विकल्पों के आधार में शामिल होंगे चयन किया जाता है करने के लिए बाध्य करने की जरूरत है:

<label> 
    <input name="Test" type="radio" value="A" 
      data-bind="checked: radioSelectedOptionValue" /> 
    Alpha 
</label> 
<label> 
    <input name="Test" type="radio" value="B" 
      data-bind="checked: radioSelectedOptionValue" /> 
    Beta 
</label> 

आप अपने बूलियन गुण रखना चाहते हैं: A और B, तो आप उन्हें ko.computed बनाने की जरूरत है (केवल पढ़ने के लिए, लिखने योग्य) का उपयोग करेगा जो/radioSelectedOptionValue का मूल्य परिवर्तित:

this.radioSelectedOptionValue = ko.observable(); 
this.A = ko.computed({ 
     read: function() { 
      return this.radioSelectedOptionValue() == "A"; 
     }, 
     write: function(value) { 
      if (value) 
       this.radioSelectedOptionValue("A"); 
     } 
    }, this); 

डेमो JSFiddle.

+0

यह वह जगह है बढ़िया लेकिन जब मुझे सर्वर से मेरा मूल्य मिलता है तो यह पहले से ही गलत या सत्य है, मैं चाहता हूं कि उपयोगकर्ता रेडियो बटन का चयन करें। मुझे नहीं लगता कि यह जांच करेगा। – NoviceDeveloper

+0

क्योंकि मेरे नमूने ए और बी लिखने योग्य कंप्यूटर्स में आप उन्हें सच या गलत असाइन कर सकते हैं। मैंने http://jsfiddle.net/p8nSe/1/ में इसे डेमो करने के लिए 'loadDataFromServer' विधि' नमूना जोड़ा है। – nemesv

18

नॉकआउट 3.x चेकव्यू बाध्यकारी विकल्प जोड़ा गया। यह आपको तारों के अलावा अन्य मान निर्दिष्ट करने की अनुमति देता है।

<input name="Test" type="radio" data-bind="checked: radioSelectedOptionValue, checkedValue: true" /> 
    <input name="Test" type="radio" data-bind="checked: radioSelectedOptionValue, checkedValue: false" /> 

http://jsfiddle.net/t73d435v/

+0

टिम, शायद हम इस पर चर्चा करने के लिए मिल सकते हैं? मैं इस नए हेजेज टैब पर संघर्ष कर रहा हूं। – bubbleking

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