gpt4 book ai didi

backbone.js - 在不删除旧模型的情况下更新 Backbone.js 集合

转载 作者:行者123 更新时间:2023-12-04 02:13:31 25 4
gpt4 key购买 nike

我有一个由 Backbone.js 集合和到服务器的实时连接组成的应用程序。

每次任何客户端添加/删除/更新集合中的模型时,更新的集合都会广播给所有其他客户端(不是增量;整个集合)。

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

是否有一种 Backbone 认可的更新集合的方式来维护和更新原始模型(按 id 进行比较),仅在必要时创建/删除它们?

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

关于backbone.js - 在不删除旧模型的情况下更新 Backbone.js 集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com