Javascript 如何将JSView与jquery sortable结合使用?
我已经设置了一个使用JQuery sortable的jsViews。如果您没有更改任何内容,请正确删除works;但如果更改表中项目的顺序,然后删除任何项目,则会删除多个项目。我该如何解决这个问题?我假设有一种方法可以在移动完成后刷新观察者Javascript 如何将JSView与jquery sortable结合使用?,javascript,jquery,jquery-ui,jsrender,jsviews,Javascript,Jquery,Jquery Ui,Jsrender,Jsviews,我已经设置了一个使用JQuery sortable的jsViews。如果您没有更改任何内容,请正确删除works;但如果更改表中项目的顺序,然后删除任何项目,则会删除多个项目。我该如何解决这个问题?我假设有一种方法可以在移动完成后刷新观察者 $("#sortableQuestionArea").sortable({ placeholder: "ui-state-highlight", handle: ".sort-handle", update: function(event, ui
$("#sortableQuestionArea").sortable({
placeholder: "ui-state-highlight",
handle: ".sort-handle",
update: function(event, ui) {
// refresh code here??
}
});
这是jQueryUI sortable,它在拖放时执行DOM操作。但是,如果您使用JsViews创建数据驱动的UI,那么您的UI需要是数据驱动的,并且要更改数据排序的顺序,而不是UI UI不能同时通过移动DOM元素进行数据驱动和操作。一般来说,两者的混合要么是不可能的,要么是非常脆弱的。无论您使用什么样的数据绑定框架(JsViews、Knockout或其他框架…),这都适用
请注意,在您的示例中,删除和插入项是使用数据驱动的方法,而不是直接添加或删除DOM元素。这是用于数据驱动UI的正确模式 我仍然希望用户能够设置项目的“顺序”。这是如何实现的?我通过添加一个带有订单选项(1,2,3,…)的下拉列表来实现的,它是由索引+1生成的(因此不再可排序)。好的。否则,您可以使用按钮上下移动项目,或者编写自己的拖放处理程序来确定目标。然后创建修改后的数组:SorterDarray(项目向上或向下移动),并传递给$.observable(数组).refresh(SorterDarray)。用户界面将自动更新。看,我能够得到排序与刷新工作。。。明天我会发布一个JSFIDLE,如果你能检查一下,让我知道是否有什么我可以清理的,那就太好了。再次感谢鲍里斯!哈我创建的帮助程序导致了问题,我已在此处更新了工作代码: