Knockout JS + JQuery UI - 在重新排序后从可观察数组中删除项目的问题



我有一个可观察的数组绑定到一个列表,该列表使用 JQuery-ui 通过拖放进行重新排序。我还希望能够从可观察数组中删除项目。一切似乎都很好,直到我尝试删除已经重新订购的项目。

考虑以下 JsFiddle 代码: http://jsfiddle.net/4mMfE/

尝试将"熊"拖动到列表中的第三项,然后删除他,这似乎不起作用,但您可以删除其他项。

有谁知道如何让它按预期工作?

我有一种感觉,这与viewModel的可观察数组的顺序与页面上显示的元素的实际顺序不同步有关。

.

您是正确的,这与用户正在更改 DOM 中项目的顺序并且它没有在 observableArray 中更新有关,因此当您删除项目时找不到它。

您需要的是一个自定义绑定,它侦听重新排序事件并相应地更新模型。方便的是,这对于jQuery UI可排序已经存在:https://github.com/rniemeyer/knockout-sortable<</p>

div class="one_answers">

我认为Knockout不知道如何更新UI。它正在从数组中删除元素。

只需将您的 removeItem 功能更改为此功能,然后自己查看即可。

alert(self.items().slength);
self.items.remove(data);
alert(self.items().slength);

最新更新