我有一个很大的可观察数组:
self.data = ko.mapping.fromJS(bigdata)我需要更新数据中每个元素的单个字段;
最简单的解决方案是
self.showAll = function() {
    for(var i = 0; i<self.data().length; i++) {
        self.data()[i].visible(true);
    }
}但它非常慢,因为它在每次更新后调用处理程序。建议使用如下代码:
var items = ko.observableArray([]);
var underlyingArray = items();
for (var i = 0, j = underlyingArray.length; i < j; i++) {
    // work with underlyingArray
}
self.items.valueHasMutated();但它不适用于ko.mapping对象。
现在我使用的代码如下
var data = ko.mapping.toJS(self.data);
for(var i = 0; i<data.length; i++) {
  //
}
ko.mapping.fromJS(data, {}, self.data);我不喜欢这样。也许还有更好的?有没有办法暂停所有的ko处理程序?
发布于 2014-09-10 18:19:38
您可以调整visible属性的映射,以便在创建时返回true:
self.data = ko.mapping.fromJS(bigdata,
{
     'visible': { update: function(options) { return true; }}
});请参阅Documentation
https://stackoverflow.com/questions/25758253
复制相似问题