0

我正在使用 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});

到目前为止,我尝试了这个,它更新了一个 observable 但不更新一个 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 的问题。对此的任何帮助表示赞赏。谢谢

4

1 回答 1

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());
  }
});
于 2012-12-21T13:49:43.850 回答