これが起こっているのは、Chrome のArray.sort
ソートが安定していないためです。これは、要素のリストをソートする必要があり、一方が他方よりも優先されることを決定する基準がない場合、結果のソートされたリストが、それらが入った順序とは異なる順序でソートされる可能性があることを意味します.
解決策は、これらのオブジェクトをソートするためのいくつかの基準を使用することです。これは、レイアウトの比較機能を設定することで実行できます。
デフォルトでは、比較関数はPart.text
あなたのケースでは指定されていない を参照するため、各部分は同等であるため、Chrome の不安定な並べ替えは (それらが同等である場合) 順序を混合するため、重要ではないと考えられます。
これを修正するには、各パーツが必要な順序であるものを使用します。たとえば、data.text
またはdata.order
または何かを作成し、それを使用して比較します。
// NOTE this assumes data.text exists!
// You could use anything as long as it describes the order
function myCompareFunction(a, b) {
var at = a.data.text;
var bt = b.data.text;
if (at < bt) return -1;
if (at > bt) return 1;
return 0;
}
次に、レイアウト定義に次を追加します。
layout:
$(go.GridLayout,
{ ....... comparer: myCompareFunction })