2013-05-09 102 views
1

我需要使用knockout將tabindex設置爲動態生成的控件。我數據綁定在UI級別的屬性,但它似乎不工作。下面是數據綁定的HTML代碼:在Knockout中設置TabIndex

<tbody data-bind="foreach: Week1"> 
          <tr class="formFields" style="vertical-align: top;"> 
           <td class="formFields" width="8%" data-bind="text: Day"> 
           </td> 
           <td class="formFields" width="5%" align="center"> 
            <select class="combobox" data-bind="value:Required, attr:{tabindex: 42 + Date + $index()}" > 
             <option value="E">Eligible</option> 
             <option value="O">On</option> 
             <option value="F">Off</option> 
            </select> 
           </td> 
           <td class="formFields" width="10%" align="center" > 
            <input class="txtbox" type="text" placeholder="S:" data-bind="value:SetupTime, attr: { tabindex: 43 + Date + $index() }/> 
            <input class="txtbox" type="text" placeholder="R:" data-bind="value:CloseTime, attr: { tabindex: 44 + Date + $index() }" /> 
           </td> 
           <td class="formFields" width="10%" align="center"> 
            <input class="txtbox" type="text" placeholder="Min:" data-bind="value:MinHrsPerDay, attr: { title: tabindex: 45 + Date + $index() }"/> 
            <input class="txtbox" type="text" placeholder="Max:" data-bind="value:MaxHrsPerDay, attr: { title: tabindex: 46 + Date + $index() }"/> 
           </td> 
           <td class="formFields" width="6%" align="center"> 
            <input class="txtbox" align="middle" type="text" data-bind="value:MinWorkShift, attr: { tabindex: 47 + Date + $index() }"/> 
           </td> 
           </tr> 
          </tbody> 

這裏日期是我的視圖模型的屬性,它代表天爲0-6。由於可以有多行,因此我使用$ index()來計算每行中控件的Tab索引。

但是,這是我所看到的在運行時:

<input type="text" data-bind="value:SetupTime, attr: { tabindex: 43 + Date + $index() }" placeholder="S:" class="txtbox" tabindex="43function d(){if(0&lt;arguments.length){if(!d.equalityComparer||!d.equalityComparer(c,arguments[0]))d.H(),c=arguments[0],d.G();return this}b.r.Wa(d);return c}2"> 

可能有人請幫我糾正呢?

由於提前

回答

5

因爲你Date屬性是一個ko.observable,所以你需要通過調用它作爲一個功能,所以用Date()得到它的價值。

所以,你需要改變你的綁定:

data-bind="value:SetupTime, attr: { tabindex: 43 + Date() + $index() }" 

你只需要如果你usign您觀察到的表達式中像43 + Date() + $index()Date()稱呼它(注意()$index後)。

如果你直接綁定到一個observable那麼你不需要像data-bind="value:Required"那樣的(),因爲在這種情況下,KO會自動「解開」你的值。