Concider jQuery Mobile“列表”,包含单选按钮和标签。
<!-- 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的所有尝试都失败了?
谢谢!
答案 0 :(得分:9)
与其他绑定上下文属性不同,$ 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 -->
中的工作样本