2017-01-13 4 views
-1

レッツを選択:ノックアウトバインド私が持っていると言うのラジオボタンに

function viewModel(){ 
    this.mySelect=ko.observable(); 
    this.myRadio=ko.observable(); 
}; 
ko.applyBindings(new ViewModel()); 

<select data-bind="value: mySelect"> 
    <option>select you language</option> 
    <option value="English">English</option> 
    <option value="French">French</option> 
    <option value="Italian">Italian</option> 
</select> 

Need translator: 
<input type="radio" name="needTransaltor" value="Y" data-bind="checked: myRadio">Yes 
<input type="radio" name="needTransaltor" value="N" data-bind="checked: myRadio">No 

どのようにすることができます が「No」のラジオボタンをチェックし、ユーザーがドロップダウンから「英語」を選択した場合this.myRadioに「いいえ」の値を割り当てますか?

+0

に更新されます私はラジオボタンをチェックしjqueryの関数を記述しますが、それは観察可能な価値を変えなかった。 – Greg

+0

ノックアウトの目的や使い方を誤解しているようです。私はあなたがドキュメンテーションとサンプルから始めることをお勧めします。 http://knockoutjs.com/documentation/introduction.html –

答えて

0

ここに、以下の解決策があります。ラジオボタンのチェックされたバインディングと選択のオプションバインディングを使用します。 selectでの値バインディングのために、ユーザーが英語を選択した場合、ラジオボタンを変更するために書き込み可能な計算可観測型http://knockoutjs.com/documentation/computed-writable.htmlを使用しました。以下の例を実行することができます。英語以外の言語を選択し、[はいその後、英語の言語とラジオボタンを変更する必要がトランスレータを設定する第

function model() { 
 
    var self = this; 
 
    this.availableLanguages = ko.observableArray([ 
 
    'English', 
 
    'French', 
 
    'Italian' 
 
    ]); 
 
    this.needTranslator = ko.observable('N'); 
 
    this.language = ko.observable(''); 
 

 
    this.selectedLanguage = ko.pureComputed({ 
 
    read: function() { 
 
     return this.language(); 
 
    }, 
 
    write: function(value) { 
 
     if (value === 'English') { 
 
     this.needTranslator('N'); 
 
     } 
 
     this.language(value); 
 
    }, 
 
    owner: this 
 
    }); 
 

 

 
} 
 

 
var mymodel = new model(); 
 

 
$(document).ready(function() { 
 
    ko.applyBindings(mymodel); 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<p> 
 
    choose language: 
 
    <select data-bind="options: availableLanguages, 
 
value: selectedLanguage,   optionsCaption: 'Choose...'"></select> 
 
</p> 
 

 
Need Translator: 
 
<div> 
 
    <input type="radio" name="needTranslator" value="N" data-bind="checked: needTranslator" />No</div> 
 
<div> 
 
    <input type="radio" name="needTranslator" value="Y" data-bind="checked: needTranslator" />Yes</div>

関連する問題