【问题标题】:Dynamic id to checkbox in Knockout foreach淘汰赛foreach中复选框的动态ID
【发布时间】:2014-02-22 06:14:01
【问题描述】:
我正在开发 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,但这不起作用。当我单击提交并选中复选框时,它没有为所选复选框提供正确的值
请指导我。
【问题讨论】:
标签:
javascript
jquery
knockout.js
telerik
knockout-mapping-plugin
【解决方案1】:
如果您尝试添加的只是一个字符串值,请尝试使用引号中的Id:
<input data-enhanced="true"
data-defaults="true"
name="Contentaccuracy"
data-bind="attr: {value: 'Id' + '_1'}" type="checkbox">
虽然你可以这样做:{value: 'Id_1'} 如果这只是一个测试。
或者,您可以传递SpeakerEvaluation 的属性,但不确定您是否要这样做?例如,如果您在 SpeakerEvaluation 上有一个 speakerIdproperty,您可以执行以下操作:
<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 是唯一的,则将包含唯一值。
【解决方案2】:
制作简单的函数 randomNumber 或在 ViewModel 中添加函数或使用计算的 observable。
让我们看看使用 randomNumber 函数
function randomNumber(id) {
return Math.floor(Math.random()).toString() + id;
}
这个函数在attr bind like中调用
<input data-enhanced="true"
data-defaults="true"
name="Contentaccuracy"
data-bind="attr: {value: randomNumber(Id)}" type="checkbox">