ユーザーがアイテムを移動できるようにする UL リストがあります。彼らの選択をデータベースに保存したいので、ノックアウトにバインドしています。
並べ替えは機能しますが、UI は UI 内でドラッグされた要素を複製します。ビューモデルのデータは正しく、データ内に余分な要素を作成していないことがわかります。
ここに小さなjsfiddleの例があります
どんな助けでも素晴らしいでしょう。
ユーザーがアイテムを移動できるようにする UL リストがあります。彼らの選択をデータベースに保存したいので、ノックアウトにバインドしています。
並べ替えは機能しますが、UI は UI 内でドラッグされた要素を複製します。ビューモデルのデータは正しく、データ内に余分な要素を作成していないことがわかります。
ここに小さなjsfiddleの例があります
どんな助けでも素晴らしいでしょう。
多分?
<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>
更新された jsFiddle: http://jsfiddle.net/JVhZe/2/
と交換ui.item.removeData('previous_index');
しましたui.item.remove()
。removeData
カスタム データをクリーンアップするための jQuery 固有のメソッドです。このメソッドを呼び出す必要はありません。要素のバインドを解除/削除するときに Knockout が既にこれを行っているためです。
ところで、ノックアウトの並べ替え可能なリストのこの優れた実装をご覧になることをお勧めします。