2012-10-02 38 views
3

Concider包含單選按鈕和標籤的jQuery Mobile「list」。

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

爲了工作,屬性的標籤的需要是相同的作爲輸入的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; }; 

爲什麼我的串接$索引失敗所有嘗試?

謝謝!

+0

重複http://stackoverflow.com/questions/11302338/knockout-is-not-evaluating-an-expression-when-using-index-in-a-binding –

回答

9

$index documentation

不像其他的結合上下文屬性,$指數是可觀察到的

因此,你需要在你的綁定寫$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的工作示例

+0

賓果!謝謝 :) – Cotten