2013-12-19 129 views
0

誰能幫我激活第一個單選按鈕作爲標準如何激活單選按鈕

這裏是我的代碼

<div>Wiederholung</div> 
<div data-bind="foreach:answers"> 
     <label> 
      <input type="radio" name="wiederholung" data-bind="click: $root.setChosenAnswer" /> 
      <span data-bind="text: name"></span> 
     </label> 
     <br /> 
</div> 
<pre data-bind="text: JSON.stringify(ko.toJS($root), null, 2)"></pre> 

JS:

function Question() { 
    var self = this; 
    this.answers = ko.observableArray([ 
     new Answer("Nie", true), 
     new Answer("Täglich", false), 
     new Answer("Wöchentlich", false)]); 

    this.setChosenAnswer = function(wahl) { 
     if (wahl !== self.userAnswer()) { 
      ko.utils.arrayForEach(self.answers(), function(answer) { 
       answer.isChosen(wahl === answer); 
      }); 

      self.userAnswer(wahl);   
     } 
     return true; 
    }; 

    this.userAnswer = ko.observable(); 

    this.userAnswer.subscribe(function(newValue) { 
     alert("Ich moechte mein Termin " + this.userAnswer().name() + " Wiederholen"); 
    }, this); 
} 

function Answer(name, isChosen) { 
    this.name = ko.observable(name); 
    this.isChosen = ko.observable(isChosen); 
} 

ko.applyBindings(new Question()); 

demo

回答

1

在HTML試試這個

<input type="radio" name="wiederholung" data-bind="value: $data.name, checked: $root.defaultChecked, click: $root.setChosenAnswer" />

在JS

this.defaultChecked = "Nie";

1

您可能使用$ index()函數確定數組中項目的索引,如下所示:

<input type="radio" name="wiederholung" data-bind="click: $root.setChosenAnswer, attr: {checked: $index()==0 }" /> 

但它適用於淘汰賽2.1及以上,而在您使用2.0的演示中。

0

"checked" binding documentation

單選按鈕,KO將設置,如果要檢查的元素並且只有 如果參數值等於單選按鈕節點的值屬性 或由checkedValue參數指定的值。

所以,你需要:

  1. 更改radio元素的標記,包括value="true",因爲你想,如果你有true它被選中。
  2. 更改您的setChosenAnswer函數返回字符串值"true""false"

您也可以檢查這個SO question無線電在KnockoutJS

結合