针对jQuery UI的Knockout自定义绑定可排序 - 奇怪的行为

时间:2012-03-14 14:13:47

标签: jquery-ui knockout.js

我正在使用jQuery Sortable和Knockout维护一个数组。

http://jsfiddle.net/daniel_white/KrGY8/3/

注意拖动项目时,它们会复制或消失。

任何人都知道如何解决这个问题?

2 个答案:

答案 0 :(得分:30)

当您使用jQuery UI进行移动时,KO的项目映射会基于空文本节点而变得混乱。

您可以删除“模板”中的文本节点,如:http://jsfiddle.net/rniemeyer/KrGY8/5/

或删除现有项目并分两步将其放回正确的位置(更新observableArray两次):http://jsfiddle.net/rniemeyer/KrGY8/4/

我还编写了一个绑定插件,用于在Knockout中使用jQuery sortable,它提供了一些额外的功能:https://github.com/rniemeyer/knockout-sortable

答案 1 :(得分:1)

解决此问题的一种简单方法是首先清除绑定的observableArray,如下所示:

list([]);

然后用正确的数组更新它:

list(actualArray);

检查更新后的fiddle