【问题标题】: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">
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-06
        相关资源
        最近更新 更多