KnockoutJS代码块中的动态ID

时间:2012-10-12 13:16:33

标签: asp.net sharepoint knockout.js

我已就这个问题做过一些研究,但我找不到任何真正有用的东西。

我的问题

  

我有一个项目列表(在SharePoint中),我正在使用KnockoutJS   foreach语句显示包含所有这些表的表。像这样:

     

数量|价格| Total_Price | RadioButton1 | RadioButton2

     

正如你所看到的那样,有2个单选按钮,必须为它们使用id属性(因为我也使用JqueryUI - 标签为''id of element' - )

我试过这样的事情>

代码示例:

.....

  

<%int i = 1; %GT;
   < ! - - ko foreach:Items - >                         ........             

     <input type="radio" id="Yes+<%=i %>"/>
     <label for="Yes+<%=i %>" >Yes</label>
     <input type="radio" id="No+<%=i %>" />
     <label for="No+<%=i %>">No</label>

     </td>
     

&LT;%I ++; %GT;

     
    

&LT; ! - / ko - &gt;

  

事情是asp代码无法识别ko foreach迭代。

有什么想法吗?谢谢

2 个答案:

答案 0 :(得分:8)

你可以在Item视图模型上放置Id然后使用它吗?

< ! - - ko foreach: Items --> ........

 <input type="radio" data-bind="attr: { id: 'Yes' + Id }" />
 <label data-bind="attr: { 'for': 'Yes' + Id }" >Yes</label>
 <input type="radio" data-bind="attr: { id: 'No' + Id } />
 <label data-bind="attr: { 'for': 'No' + Id }">No</label>

 </td>
< !-- /ko -->

或使用Macropus建议的可观察索引:

< ! - - ko foreach: Items --> ........

 <input type="radio" data-bind="attr: { id: 'Yes' + $index() }" />
 <label data-bind="attr: { 'for': 'Yes' + $index() }" >Yes</label>
 <input type="radio" data-bind="attr: { id: 'No' + $index() } />
 <label data-bind="attr: { 'for': 'No' + $index() }">No</label>

 </td>
< !-- /ko -->

答案 1 :(得分:0)

看到你只是将它用于标签,你可以在这篇文章中使用knockout uniqueid绑定:

UniqueID binding in knockout

还有一个单序列绑定