【问题标题】:Multidimensional Array printing in knockout with functionality over each row through click button多维阵列打印,通过单击按钮在每行上具有功能
【发布时间】:2015-12-23 14:57:14
【问题描述】:

我可以创建一个名为 columns 的数组,其结构如下:

columns = [
           {column: [1,2,3,4,5,6]},
           {column: [7,8,9,10,11,12]},
           {column: [13,14,15,16,17,18]}
          ]

我使用以下代码成功打印了数组:

<table class="table">
    <tbody data-bind="foreach: columns">
        <tr data-bind="foreach: $data.column">
            <td><input type="button" class="btn btn-default" data-bind="value: $data"</td>
         </tr>
     </tbody>
 </table>

但是,我希望在每个表格行的末尾引入一个按钮,以便能够删除该行。我知道该按钮将包含一个名为 removeColumn 的数据绑定单击函数,在我的视图模型中它将是这样的:

self.removeColumn = function() {
    self.columns.remove(this);
}

我找不到在表格中正确引入此按钮的方法。其他时候每行创建 6 次,其他时候根本不出现。当我尝试显示每一列的索引时也会发生同样的事情 - 表格行,以便我可以计算出现了多少列。

https://jsfiddle.net/qmxs87k5/4/

【问题讨论】:

  • 你能做一个 jsfiddle 或 plunker 吗?这样可以更轻松地解决您的问题
  • 我用 jsfiddle 编辑了问题

标签: javascript arrays knockout.js data-binding


【解决方案1】:

您可以尝试对淘汰赛的 foreach 使用注释语法,这样您就可以在每行添加另一个 &lt;td&gt;

<table class="table">
    <tbody>
    <!-- ko foreach: columns -->
        <tr>
            <!-- ko foreach: $data.column -->
            <td><input type="button" class="btn btn-default" data-bind="value: $data"</td>
            <!-- /ko -->

            <td>
                <div class="btn btn-primary" data-bind="click: $parent.deleteRow">Delete Row</div>
            </td>
         </tr>
     <!-- /ko -->
     </tbody>
 </table>

【讨论】:

  • 请注意,有时候,knockout.js 中的嵌套作用域很难解决。如果控制台显示错误提示找不到未定义的 deleteRow 或类似的内容,请告诉我。我可以查看我的淘汰代码来为您解决问题
  • 谢谢。我不知道这种语法。顺便说一句,因为我得到Uncaught Error: Cannot find closing comment tag to match: ko foreach: $data.column,所以代码中似乎有错误
  • 这是一个错字...输入元素的结束标记。
猜你喜欢
  • 2020-07-14
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多