Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将JSView与jquery sortable结合使用?_Javascript_Jquery_Jquery Ui_Jsrender_Jsviews - Fatal编程技术网

Javascript 如何将JSView与jquery sortable结合使用?

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

我已经设置了一个使用JQuery sortable的jsViews。如果您没有更改任何内容,请正确删除works;但如果更改表中项目的顺序,然后删除任何项目,则会删除多个项目。我该如何解决这个问题?我假设有一种方法可以在移动完成后刷新观察者

$("#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,如果你能检查一下,让我知道是否有什么我可以清理的,那就太好了。再次感谢鲍里斯!哈我创建的帮助程序导致了问题,我已在此处更新了工作代码: