我的理解是否正确,如果在foreach绑定中的container-div上设置了beforeRemove
处理程序,这会导致敲除而不是删除该项?换句话说, beforeRemove 就像数据库中的“替代”触发器一样?
答案 0 :(得分:2)
您的理解是正确的:如果您使用的是beforeRemove
或beforeMove
处理程序,则您有责任删除DOM节点。
beforeRemove
- 在删除数组项时调用,但是 在删除相应的DOM节点之前。如果你指定一个 beforeRemove回调,然后你有责任删除 DOM节点。
您可以通过添加空的beforeRemove
处理程序轻松尝试此操作,并且不会自动删除这些项目:
<ul data-bind="foreach: {data: items, beforeRemove: function() { }}">
<li>
<span data-bind="text: $data"></span>
<button data-bind="click: $parent.remove">Remove</button>
</li>
</ul>
演示JSFiddle。