我有一个包含嵌套树数组的可观察数组。每个数组项都有一个子属性,用于保存子项。当我单击复选框时,我想删除勾选的表行,而这些行又应该删除显示所选项目的子项的行。我怎样才能做到这一点?我在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没有意义
答案 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/