3

ラジオボタンとそのラベルを含むjQueryMobileの「リスト」を検討してください。

<!-- ko foreach: $data.answers -->
<input type="radio" name="radio-choice" data-bind="attr: { id: [...] }" />
<label data-bind="attr:{ for: [...] }">Label</label>
<!-- /ko -->

動作するには、ラベルのfor属性が入力のIDと同じである必要があります。

REPLACEMENT FOR [...]            RESULTS IN
$index                           ok
'radio-nr-'+$index               fails
$root.testFunction(1)            ok
$root.testFunction($index)       fails
'radio-nr-'.concat(1)            ok
'radio-nr-'.concat($index)       fails

どこ

function testFunction(a) {  return "radio-nr-"+a; };

$ indexを連結しようとする試みがすべて失敗するのはなぜですか?

ありがとう!

4

1 に答える 1

9

$ indexのドキュメントから:

他のバインディングコンテキストプロパティとは異なり、$indexは監視可能です

$index()したがって、バインディングに(括弧に注意して)書く必要があります。

<!-- ko foreach: $data.answers -->
<input type="radio" name="radio-choice" 
                    data-bind="attr: { id: 'radio-nr-' + $index()  }" />
<label data-bind="attr:{ for: 'radio-nr-' + $index() }">Label</label>
<!-- /ko -->

JSFiddleでの作業サンプル

于 2012-10-02T07:16:21.273 に答える