Knockout foreach中的动态ID复选框

时间:2014-01-30 04:52:07

标签: javascript jquery knockout.js telerik knockout-mapping-plugin

我正在开发telerik应用程序。其中我使用knockout.js绑定table.Code for foreach中的数据:

<tbody id="tbodySpeakerEvaluation" data-bind="foreach: SpeakerEvaluation">

为复选框提供动态值的代码如下:

<input data-enhanced="true" data-defaults="true" name="Contentaccuracy" data-bind="attr: {value: Id + '_1'}" type="checkbox">

我希望我的复选框值应为Id_1,但这不起作用。当我点击提交并获得选中复选框时,它没有给我选中复选框的正确值

请指导我。

2 个答案:

答案 0 :(得分:0)

如果它只是您要添加的字符串值,请使用引号中的Id进行尝试:

<input data-enhanced="true" 
       data-defaults="true" 
       name="Contentaccuracy" 
       data-bind="attr: {value: 'Id' + '_1'}" type="checkbox">

虽然你可以这样做:{value: 'Id_1'}如果这只是一个测试。

或者,您可以传递SpeakerEvaluation的属性,不确定这是否是您要做的?例如,如果speakerId上有SpeakerEvaluation属性,则可以执行以下操作:

<input data-enhanced="true" 
       data-defaults="true" 
       name="Contentaccuracy" 
       data-bind="attr: {value: 'chk' + speakerId}" type="checkbox">

或者Id是您的财产:

<input data-enhanced="true" 
       data-defaults="true" 
       name="Contentaccuracy" 
       data-bind="attr: {value: 'chk' + Id}" type="checkbox">

这样,每个复选框的值都与foreach相关,如果ID是唯一的,则包含唯一值。

答案 1 :(得分:0)

创建简单函数randomNumber或在ViewModel中添加函数或使用计算的observable。

让我们看一下使用randomNumber函数

function randomNumber(id) {
     return Math.floor(Math.random()).toString() + id;
}

此函数调用attr绑定,如

<input data-enhanced="true" 
       data-defaults="true" 
       name="Contentaccuracy" 
       data-bind="attr: {value: randomNumber(Id)}" type="checkbox">