2017-07-10 17 views
0

knockout.jsを初めて使用し、ラジオボタンリストを生成するように管理しました。しかし、私はリストの最初のラジオボタンをどのように事前選択するか分からない。ここでは、コードの重要な部分の抜粋は(と思う)です:knockout.jsの最初のオプションを事前に選択しました

knockout.js:

$.ajax({ 
    url: '/path/to/external/rest/api/' + zipCode, 
    type: 'GET', 
    context: document.body 
}).done(
    function (response) { 
     $.each(response, function(key, droppoint) { 
      self.droppoints.push(droppoint); 
     }); 
    } 
).fail(

); 

HTML:

<div data-bind="foreach: $parents[1].droppoints" > 
    <label> 
    <input class="droppoint_radio" type="radio" 
      name="droppoint_location" 
      data-bind="attr: {value: number}" /> 
    <div class="droppoint_address"> 
     <div data-bind="text: company_name"></div> 
    </div> 
    </label> 
</div> 
+0

私は、 「ラジオボタン」はラジオボタンではないためです。 –

+0

実際には、間違ったコードが含まれています。これは修正されました – Cudos

答えて

0

あなたがでノックアウトのラジオボタンを制御することができますchecked結合。選択したラジオボタンを表す観測値selectedPointを追加し、この観測値に最初のラジオボタンの値を割り当てることができます。

あなたのjavascriptによっては、これは次のようになります。

viewModel.selectedPoint = ko.observable(); 

は、HTMLへの結合checkedを追加:

<div data-bind="foreach: $parents[1].droppoints" > 
    <label> 
     <input class="droppoint_radio" type="radio" 
      name="droppoint_location" 
      data-bind="attr: {value: number}, 
      checked: $parents[2].selectedPoint" /> 
     <div class="droppoint_address"> 
      <div data-bind="text: company_name"></div> 
     </div> 
    </label> 
</div> 

最後に、中にデフォルト値として最初droppointの数を設定しますAJAXコールバック:

$.ajax({ 
    url: '/path/to/external/rest/api/' + zipCode, 
    type: 'GET', 
    context: document.body 
}).done(
    function (response) { 
     $.each(response, function(key, droppoint) { 
      self.droppoints.push(droppoint); 
     }); 
     self.selectedPoint(response[0].number); 
    } 
) 
+0

申し訳ありませんが、前に間違ったコードを追加しました。私はそれを修正しました。 – Cudos

+0

問題はない、私は私の答えを更新しました。 :) – jobB

関連する問題