我有一个UL列表,我允许用户移动项目。因为我想将他们的选择保存回数据库,所以我与淘汰赛有约束力。
排序有效,但UI会复制UI中的拖动元素。 viewmodel的数据是正确的,我可以看到它没有在数据中创建额外的元素。
我有一个小jsfiddle示例here
任何帮助都会很棒。
答案 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可排序列表的这个优秀实现: