配列を格納してる ko.observableArray のデータをjavascriptのコマンド「splice」で入れ替えをしました。
lang
1index2 = index1 - 1 2data1 = parent.list()[index1] 3data2 = parent.list()[index2] 4parent.list().splice index1,1,data2 5parent.list().splice index2,1,data1
内部的には入れ替わっていることは確認しましたが、
表示上は並び替えが行われていません。
http://kojs.sukobuto.com/docs/observableArrays
2.push や splice などの配列の要素を操作する関数において、 Knockout のメソッドは依存トラッキングメカニズムを自動的に引き起こすため、 すべての登録されたリスナに対して変更が通知され、UI が自動更新されます。
とありますが、入れ替えには対応していないのかもしれません。
ディープコピーだと書き換わったとあったのですが、試した所変化無しでした。
http://qiita.com/ashikawa/items/c01c512722d4d74bf83a
// しかたないからディープコピー
ob.splice(idx, 1, $.extend(true, {}, b));
入れ替えた部分だけdomが書き換わってくれると理想ですが、
あるいはforeachで処理している部分を再描画する方法があればと考えています。
よろしくお願いします。
あなたの回答
tips
プレビュー