1

我有一个允许用户移动项目的 UL 列表。我与淘汰赛绑定,因为我想将他们的选择保存回数据库。

排序有效,但是 UI 会复制 UI 中拖动的元素。viewmodel 的数据是正确的,我可以看到它没有在数据中创建额外的元素。

我在这里有一个小的 jsfiddle 示例

任何帮助都是极好的。

4

2 回答 2

1

也许?

<script type="text/javascript">
$(function () {
                var curr;
                $("#giftListEditor").sortable({
                    start: function (event, ui) {
                        curr = viewModel.gifts()[ui.item.index()];
                    },
                    update: function (event, ui) {
                        var currIndex = ui.item.index();
                        viewModel.gifts.remove(curr);
                        viewModel.gifts.splice(currIndex == -1 ? 0 : currIndex, 0, curr);
                    }
                }).disableSelection(); 
});
</script>
于 2013-03-06T11:23:43.573 回答
0

更新了 jsFiddle:http: //jsfiddle.net/JVhZe/2/

我已经替换ui.item.removeData('previous_index');ui.item.remove(). removeData是一种用于清理自定义数据的 jQuery 特定方法。您不必调用此方法,因为当您取消绑定/删除元素时,Knockout 已经为您执行此操作。

顺便说一句,我建议您看一下 Knockout 可排序列表的出色实现:

http://jsfiddle.net/rniemeyer/QWgRF/

于 2012-08-26T07:57:35.807 回答