ノックアウトマッピング プラグインを使用してビューを自動作成していますが、正常に動作しています。
ただし、マップされたオブジェクトの値に基づいてゲージを生成するためにRaphael.jsを使用していますが、更新されたすべてのオブザーバブルに対してゲージが再描画されることに気付きました。ページ上にこれらのゲージが多数あることを考えると、AJAX 呼び出しから新しいデータを取得するたびにそれらを 3 回再描画することは、パフォーマンスにとってあまり良くありません。
copy
そのため、マッピング オプションを使用して、オブジェクトのプロパティの 1 つを除くすべてを通常の JavaScript プロパティに変更しました。
今私が抱えている問題は、すべてのストレートな JavaScript プロパティが更新される前に、1 つの監視可能なプロパティが更新されているため、ゲージの一部が同期していないことです。具体的には、観測可能なプロパティは DisplayValue で、ゲージの中央にテキストとして出力しますが、実際にゲージに線を描画するために使用する通常のプロパティ PercentValue もあります。そのため、DisplayValue は PercentValue の前に更新されます。これにより、ゲージが再描画されます。つまり、ゲージの線には、現在の PercentValue ではなく、常に最後の PercentValue が表示されます。
スロットルエクステンダーを見てきましたが、これを機能させるには、両方のオブザーバブルを含む計算されたプロパティを追加する必要があるようですが、プロパティを追加する必要があるという考えは好きではありませんこの機能を取得します。同様に、監視可能なプロパティ (LastUpdated など) を追加して、オブジェクト全体が更新された後に手動で更新できると思いますが、それも満足のいくものではありません。
combinedObservableに対して提起された問題があるように見えるので、現時点では私が望む方法でこれを行う方法はないと思います。
それで、これを完全に行うより良い方法はありますか?オブザーバブルの前に通常の JavaScript プロパティを更新する方法はありますか? プロパティはアルファベット順に処理されていると思いますか?