使用knockout创建jqueryUI可排序列表

时间:2012-08-25 22:24:42

标签: jquery-ui knockout.js

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

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

我有一个小jsfiddle示例here

任何帮助都会很棒。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

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

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

顺便说一下,我建议你看一下Knockout可排序列表的这个优秀实现:

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