我正在使用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);
});
更新数据
在下面工作 - >但我不想使用它的原因是它只是将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的问题。 对此有任何帮助表示赞赏。谢谢
答案 0 :(得分:0)
observable是一个函数,所以为了获得它的价值,你可以称之为:
var value = item.LTP();
要设置该值,请将新值传递给方法:
item.LTP(newValue);
所以要更新LTP,也许你可以尝试一下(如果没有一个完整的例子,很难说清楚):
ko.utils.arrayForEach(vm.WijGridViewModel.FilteredData(),function(item)
{
if(item.Symbol==newItem.Symbol)
{
item.LTP(newItem.LTP());
}
});