我有一个由 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 秒。有没有办法在每次更新模型时评估值,并检查每个值是否旧值与新值不同?
另一个问题是我得到的数据是一个里面有对象的数组。[ { name: 'name1', items:[ {},{} ]} , { name: 'name2', items:[ {},{}] }, ... ]
所以,ko.mapping.fromJS(data),返回 [ ] !!必须使用
ko.mapping.fromJS(data, {}, viewModel);
,但我不知道它是否相同......