1

ユーザーがアイテムを移動できるようにする UL リストがあります。彼らの選択をデータベースに保存したいので、ノックアウトにバインドしています。

並べ替えは機能しますが、UI は UI 内でドラッグされた要素を複製します。ビューモデルのデータは正しく、データ内に余分な要素を作成していないことがわかります。

ここに小さな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 が既にこれを行っているためです。

ところで、ノックアウトの並べ替え可能なリストのこの優れた実装をご覧になることをお勧めします。

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

于 2012-08-26T07:57:35.807 に答える