我有一个绑定到列表的可观察数组,该列表使用 JQuery-ui 进行拖放重新排序。我还希望能够从可观察数组中删除项目。在我尝试删除已重新订购的商品之前,一切似乎都运行良好。
考虑以下 JsFiddle 代码:http: //jsfiddle.net/4mMfE/
尝试将“熊”拖到列表中的第三个项目,然后将其删除,它似乎不起作用,但您可以删除其他项目。
有谁知道如何让它按预期工作?
我有一种感觉,这与 viewModel 的可观察数组的顺序与页面上显示的元素的实际顺序不同步有关。
.
我有一个绑定到列表的可观察数组,该列表使用 JQuery-ui 进行拖放重新排序。我还希望能够从可观察数组中删除项目。在我尝试删除已重新订购的商品之前,一切似乎都运行良好。
考虑以下 JsFiddle 代码:http: //jsfiddle.net/4mMfE/
尝试将“熊”拖到列表中的第三个项目,然后将其删除,它似乎不起作用,但您可以删除其他项目。
有谁知道如何让它按预期工作?
我有一种感觉,这与 viewModel 的可观察数组的顺序与页面上显示的元素的实际顺序不同步有关。
.
您是正确的,这与用户正在更改 DOM 中项目的顺序并且它没有在 observableArray 中更新的事实有关,因此当您删除一个项目时它无法找到。
您需要的是一个自定义绑定,它监听重新排序事件并相应地更新模型。方便地,这对于 jQuery UI 可排序已经存在:https ://github.com/rniemeyer/knockout-sortable
我认为 Knockout 不知道如何更新 UI。它正在从数组中删除元素。
只需将您的 removeItem 功能更改为此并自己查看。
alert(self.items().slength);
self.items.remove(data);
alert(self.items().slength);