更新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;
};

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...