我知道这个问题听起来很熟悉,但是我已经阅读了很多类似的问题并且无法找到我的具体情况。
我有一个名为 gds (GlobalDataStructure) 的 javascript 对象。顾名思义,这个对象包含我项目的所有网页所需的所有信息,并存储在 localStorage 中(因此我不只是更新视图模型,而是首先需要映射)。它包含通过 AJAX 读取的各种提要。
我使用构造函数来创建 gds。为了大大简化这个结构并希望让这个问题变得简单,假设 gds 是
function gdStructure(){
this.lastUpdate = new Date(2010,1,1);
this.family = new Object();
this.series = new Object();
this.product = new Object();
}
所以我有
gds= new gdStructure();
然后,一旦我用来自初始提要的数据填充了 js 数组,我将执行以下操作。
viewmodel = ko.mapping.fromJS(gds);
ko.mapping.fromJS(gds,viewmodel);
然后将视图模型绑定到每个页面
ko.applyBindings(viewmodel);
所以这一切都没有问题。例如,当我获得一个新的家庭提要并且我想更新该对象时,就会出现此问题。我可以做到以下几点
gds.family=feed;
ko.mapping.fromJS(gds,viewmodel);
一切都可以正常工作,但每次都映射一个 MASSIVE JS 对象。这非常慢,因此我需要找到一种方法来仅更新已更改的提要。理想情况下像..
ko.mapping.fromJS(gds.family, viewmodel.family);
但这似乎不起作用。也因为它是一个我不能做的对象。
viewmodel.family(gds.family)
有谁能够帮我?我相信这一定很简单。
感谢期待。