Javascript 使用淘汰排序表拖动observableArray项时出现延迟
我有一个单页应用程序,它为公交车上的座位提供了一个管理UI。它定期从服务器接收更新的数据,这些数据被合并到淘汰视图模型中(使用可观测和可观测数组)。结构如下所示:Javascript 使用淘汰排序表拖动observableArray项时出现延迟,javascript,jquery-ui,knockout.js,jquery-ui-sortable,knockout-sortable,Javascript,Jquery Ui,Knockout.js,Jquery Ui Sortable,Knockout Sortable,我有一个单页应用程序,它为公交车上的座位提供了一个管理UI。它定期从服务器接收更新的数据,这些数据被合并到淘汰视图模型中(使用可观测和可观测数组)。结构如下所示: 视图模型 公共汽车 座位 它使用击倒排序插件,允许用户拖动座椅来更改其顺序 出于各种原因(其中包括性能),来自服务器的数据以diff的形式发送,客户机代码将每个更新合并到单个持久视图模型中,而不是将其吹走并在每次刷新时重新构建 测试页面加载一组初始数据(三条总线,两条带座椅),一切都运行顺利——座椅可以重新排序,没有问题但
- 视图模型
- 公共汽车
- 座位
- 公共汽车
看起来您可以确保有一个“虚拟”项开始,并在应用绑定后立即将其删除,或者一个潜在的解决方法是访问小部件并将
floating
设置为true
类似于:sortable:{data:Seats,connectClass:false,options:{activate:setFloating}}
与:
这两种方法似乎都是一种变通方法,但似乎都能使其正常工作。初始化没有项目的jQuery UI可排序表,然后在以后添加它们,这似乎是一个问题。可能只有水平排序。作为一种解决方法,可以确保至少添加一个虚拟项来启动并在应用绑定后立即将其删除。我希望您能加入,Ryan.:)在做了更多的挖掘之后,看起来这正是问题所在。我创建了一个更简单的演示,可以更好地隔离它:一些其他似乎相关的问题:以及
setFloating: function() {
$(this).data("uiSortable").floating = true;
}