私はwizmoグリッドを使用しており、StockDataとして作成されたモデルにバインドされています:
//私のビューモデル:
function StockData(data)
{
var self=this;
self.Symbol = data.Symbol;
self.LTP=ko.observable(data.LTP);
};
//ajaxサービス呼び出しが成功した後にデータを追加する
var arr[];
jsondata=event.data.value;
$.each(jsonData,function(i)
{
vm.WijGridViewModel.Data.push(new StockData({Symbol:jsonData[i].Symbol,LTP:jsonData[i].LTP}));
});
ko.utils.arrayForEach(vm.WijGridViewModel.Data(),function(item)
{
vm.WijGridViewModel.FilteredData.push(item);
});
データの更新
以下の1つで動作します->しかし、これを使用したくない理由は、observable []の古いアイテム全体を新しいアイテムに置き換えるだけですが、LTPである単一のフィールドを更新するだけです。以下でまったく新しいアイテムを古いものに置き換えてみましたが、膨大なデータとリアルタイムでパフォーマンスの問題が発生することに気付きました
var newItem = event.data.value1;
var index = event.data.value2;
vm.WijGridViewModel.FilteredData.replace(
vm.WijGridViewModel.FilteredData()[index],
{Symbol:newItem.Symbol,LTP:newItem .LTP});
これまでのところ、これを試しましたが、オブザーバブルは更新されますが、UIは更新されません:
ko.utils.arrayForEach(vm.WijGridViewModel.FilteredData(),function(item)
{
if(item.Symbol==newItem.Symbol)
{
item.LTP= newItem.LTP;
}
});
//wijgridとの相互作用のための共通クラス
function WijGridViewModel(){
var self=this;
self.data=ko.observableArray();
self.FilteredData=ko.observableArray();
return
{
Data:self.data,
FilteredData:self.FilteredData
}
}
wijgridを使用する
<table id="dataGrid" data-bind="wijgrid:{data:WijGridViewModel.FilteredData}">
監視可能なフィールドを更新するときにwijgridを更新する際の問題に直面しています。これに関するどんな助けもありがたいです。ありがとう