20

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 を使用していますが、それがこのシナリオに影響しているとは思いません。

4

1 に答える 1