0

我已经设置了一个jsFiddle 示例,其中我使用带有 JQuery 可排序的 jsViews。如果您不更改任何内容,则 remove 可以正常工作;但是如果您更改表中项目的顺序,然后删除任何项目,它会删除多个项目。我该如何解决?我认为有一种方法可以在移动完成后刷新观察者。

$("#sortableQuestionArea").sortable({
  placeholder: "ui-state-highlight",
  handle: ".sort-handle",
  update: function(event, ui) {
    // refresh code here??
  }
});
4

1 回答 1

2

这是 jQueryUI 可排序的——它在您拖放时执行 DOM 操作。但是如果您使用 JsViews 创建数据驱动的 UI,那么您的 UI 需要是数据驱动的 - 并且要更改您需要对数据进行排序的顺序,而不是 UI。

UI 不能同时通过移动 DOM 元素来进行数据驱动和操作。通常,将两者混合是不可能的或非常脆弱的。无论您使用什么数据绑定框架(JsViews、Knockout 或其他一些框架......),这都适用。

请注意,在您的示例中,删除和插入项目是使用数据驱动的方法 - 而不是直接添加或删除 DOM 元素。这是用于数据驱动 UI 的正确模式...

于 2014-04-22T16:41:30.090 回答