2017-12-14 13 views
0

私たちはquestionsという配列を持っています。各質問の配列はanswerです。それぞれの答えはtextvalueです。各questionには、選択した回答のvalueを保持するプロパティselectedAnswerがあります。foreachループの親への参照は機能しません

実装:

<div data-bind="foreach : {data: questions}"> 

<p data-bind="text: desc"></p> 
<div data-bind="foreach: {data: answers}"> 
    <div> 
    <span>Working:</span> 
     <label data-bind="text: answer"></label> 
     <input name="something" type="radio" data-bind="checked: model.selectedAnswer, value: value"></input> 
    <span>...Not working--></span> 
     <label data-bind="text: answer"></label> 
     <input name="something" type="radio" data-bind="checked: $parent.selectedAnswer, value: value"></input> 
    </div> 
</div> 

</div> 

The selected answer is: 
<span data-bind="text: model.selectedAnswer"> 
</span> 

そして、ここでは、関連JavaScriptです:

model = { 
    selectedAnswer: ko.observable(), 
    questions: ko.observableArray() 
    }; 

var q1 = { 
    desc: 'Do you like JS?', 
    answers: [ 
    {answer:'Yes', value:'Yaaay'}, 
    {answer:'No', value:'Nope'} 
    ] 
}; 

model.questions.push(q1); 

ko.applyBindings(model); 

問題:
私はmodel.selectedAnswerselectedAnswerを参照する場合、それは正常に動作します。もし私が$parent.selectedAnswerでそれを参照しても動作しません。私は何が欠けていますか?

JSFiddle:その文脈において
https://jsfiddle.net/votsevfd/2/

答えて

1

$parent質問オブジェクトではなく、モデル自体を指します。あなたはmodelメンバーにアクセスするには、祖父母(親の親)を参照する必要があります。

$parentsコンテキストプロパティでアクセスできます。これは、現在のコンテキストに対する親オブジェクトの配列です。 $parents[0]は親オブジェクト($parentと同じ)に対応します。祖父母は$parents[1]です。

<input name="something" 
     type="radio" 
     data-bind="checked: $parents[1].selectedAnswer, value: value"> 

fiddle

関連する問題