foreachバインディングとソートを組み合わせる際に問題があります。私はそうのような束縛リストを持っている:これはうまく私に私「ウィジェット」のリストを与える作品ノックアウト - foreachとソートを併用する
var widgets= ko.observableArray();
:
<article data-bind="foreach: widgets">
ウィジェットは簡単obvservable配列です。このリストに新しい「ウィジェット」を追加すると、データバインディングを介してリストに動的に表示されます。
しかし、すぐに私は配列に並べ替え追加する:
<article data-bind="foreach: widgets.sort(function (left, right) { return left.order() == right.order() ? 0 : (left.order() < right.order() ? -1 : 1); })">
その後、新たに追加されたウィジェットは、もはや私のリストに表示されます - 私はページをリロードしない限り。 (ソートはこの時点でうまく機能します。ソートしている「オーダー」フィールドを更新すると、リスト内のアイテムが動的に並べ替えられます)。
どのように私の観察可能な配列の新しい項目の動的な更新でうまくいくように並べ替えを取得することができますか?
私はデータを取得するためにBreezejを使用していますが、このシナリオには影響していないと思います。
:
その後、あなたがそれをバインドすることができます。 ko.computedの最初に "function()"を含めるように答えを更新してください(最初のカッコ内)。私はそれを答えとして受け入れます。 – daveywc
上記の答えに加えて、ネストされたforeach、つまりトップレベルのリストのウィジェットのナビゲーションプロパティのforeachに対してこの作業を行うにはどうすればよいですか?この場合、私はバインディングしているobservable配列を明示的に宣言していないので、この方法を使用する方法がわかりません。 – daveywc
私は私の答えに入力ミスを修正しました。私はBreezejsに慣れていませんが、これらのカスタムソートプロパティを作成するように設定できると思います。とにかくJSは動的なので、既存のオブジェクトに新しいプロパティを追加することができます。 – nemesv