foreach バインディングとソートの組み合わせに問題があります。次のようにバインドされたリストがあります。
<article data-bind="foreach: widgets">
Widgets は単純な監視可能な配列です。
var widgets= ko.observableArray();
これはうまく機能し、「ウィジェット」のリストが表示されます。このリストに新しい「ウィジェット」を追加すると、データ バインディングによってリストに動的に表示されます。
ただし、並べ替えを配列に追加するとすぐに:
<article data-bind="foreach: widgets.sort(function (left, right) { return left.order() == right.order() ? 0 : (left.order() < right.order() ? -1 : 1); })">
その後、新しく追加されたウィジェットは、ページをリロードしない限り、リストに表示されなくなります。(この時点でソートはうまく機能します。ソートしている「順序」フィールドを更新すると、リスト内の項目が動的に再ソートされます)。
監視可能な配列内の新しいアイテムの動的更新でソートをうまく実行するにはどうすればよいですか?
データを取得するために Breezejs を使用していますが、それがこのシナリオに影響しているとは思いません。