用于在KnockoutJS中唯一标识ForEach绑定元素的模式

时间:2013-08-05 18:37:18

标签: knockout.js

我有一个knockoutjs viewmodel,其中包含一个人的联系类型列表(电话号码,电子邮件,实际地址等)。

每种不同的联系人类型都有不同的Template。 (例如,电话号码字段与物理地址字段不同)。

这很好用。

现在我需要能够为模板中的每个元素提供一个唯一的ID,以便我可以在标记和javascript中引用它们。例如,每个联系人类型都有一个名为AddressType的字段,用户可以在其中输入家庭地址,工作电子邮件等信息......对于每种联系人类型,它都是相同的字段。 html标记看起来像这样:

<label for='AddressType'>
    Type 
    <input type='text' id='AddressType' data-bind='value: AddressType' placeholder='Home, Work, etc...' />
</label>

现在这变得令人困惑。当屏幕上有四种不同的联系人类型时,Label标签最终会引用ID为&#34; AddressType&#34;的第一个元素。当我在屏幕上有两个电话号码字段时,PhoneNumber字段的标签的行为方式相同。

如何为Knockout模板中的每个模板化表单字段指定唯一ID名称?

如果这不清楚,请留下评论,我将创建一个JSFiddle来演示该问题。

1 个答案:

答案 0 :(得分:2)

不要使用标签的for属性。它是可选的,如果没有提供,标签将应用于子input元素。

除此之外,请看这个问题:Unique ids in knockout.js templates