JSONリクエストによって数秒ごとに入力されるビューモデルがあります。
viewModel = ko.mapping.fromJS([]);
...
getJSON(){
...
ko.mapping.fromJS(data,viewModel);
}
次に、HTML にいくつかのテキスト バインディングがあります。
<div id="mainContainer" data-bind='foreach: viewModel'>
<span data-bind='text: name()'></span>
<!-- ko foreach: items() -->
<span data-bind='text: value()'></span>
<!-- /ko -->
</div>
通常、これらの値は 1 ~ 2 分ごとに変更されます。しかし、JSON が読み込まれるたびに、モデルは「更新」され、すべての値が「新しい」と見なされます。したがって、「更新」は使用できません。この値が実際に変化したときに何かをしたいとしましょう。たとえば、2 秒間緑色の境界線を表示します。モデルが更新されるたびに値を評価し、古い値が新しい値と異なるかどうかをそれぞれチェックする方法はありますか?
もう 1 つの問題は、取得したデータが内部にオブジェクトを含む配列であることです。[ { name: 'name1', items:[ {},{} ]} , { name: 'name2', items:[ {},{}] }, ... ]
したがって、ko.mapping.fromJS(data) は [ ] を返します !! を使用する必要
ko.mapping.fromJS(data, {}, viewModel);
がありましたが、同じかどうかはわかりません...