更新Backbone.js集合而不擦拭旧模型

前端之家收集整理的这篇文章主要介绍了更新Backbone.js集合而不擦拭旧模型前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个由Backbone.js集合和实时连接到服务器的应用程序.

每次任何客户端在集合中添加/删除/更新模型时,更新的集合将被广播到所有其他客户端(而不是三角形;整个集合).

从其他客户端处理此更新事件时,我发现更新集合的唯一方法是reset().不幸的是,这会擦除旧的模型并创建新的模型,以及所有视图相关的副作用.

是否有一种骨干认证的方法来更新维护和更新原始模型(按ID比较)的集合,仅在必要时才创建/删除

UPDATE Backbone已经添加Collection.set方法,它能够更新现有的模型.

解决方法

我去的解决办法是:
Backbone.Collection.prototype.update = function(colIn){  

  var ids = [];

  _(colIn).each(function(modIn){
    var existing = this.get(modIn);
    // update existing models
    if (existing) { existing.set(modIn); }
    // add the new ones
    else { this.add(modIn); }

    ids.push(modIn.id);
  },this);

  // remove missing models (optional)
  var toRemove = this.reject(function(model){
    return _(ids).include(model.id);
  });

  this.remove(toRemove);
  return this;
};

猜你在找的JavaScript相关文章