Knockout不会从可观察数组中删除项目

时间:2013-01-04 23:47:59

标签: javascript knockout.js ko.observablearray

我有一个包含嵌套树数组的可观察数组。每个数组项都有一个子属性,用于保存子项。当我单击复选框时,我想删除勾选的表行,而这些行又应该删除显示所选项目的子项的行。我怎样才能做到这一点?我在jsFiddle here

上有一个小例子

这是我的淘汰模板:

<script id="nodeTmpl" type="text/html">
    <tr>
        <td>
            <input type="checkbox" name="check[]" />
        </td>
        <td data-bind="text: name"></td>
    </tr>
    <!-- ko template: { name: 'nodeTmpl', foreach: nodes } --><!-- /ko -->
</script>

我必须使用表而不是ul,因为我正在使用bootstrap,所以我设计了它。此外,我有多个列和样式div或ul没有意义

1 个答案:

答案 0 :(得分:3)

这是一个解决方案。由于您具有树结构,因此每个节点都有一个带有节点数组的父节点(如果我们还将root重命名为nodes)。使用Knockout,您始终可以使用$parent访问父对象,从而使用$parent.nodes访问封闭数组。

<input type="checkbox"
     data-bind="click: function() { $parent.nodes.remove($data); }" />

JsFiddle:http://jsfiddle.net/mbest/5qqWn/3/