5

当用户在不同的 Backbone 集合模型之间切换时(通过单击表格行),我需要“唠叨”用户未保存的更改。我搜索了“检查主干模型脏数据”(例如),但没有找到任何确定的东西。

我使用下划线的“some”isEqual 功能以如下方式完成了此操作,“some()”足以确定是否存在任何未保存的更改(与那些可能的精确更改相反),在特别是因为模型属性实际上是一个对象数组。

var anyDirty = _.some(myCollection.models, function(model) {
    return !_.isEqual(model.get('nodes'), model.previousAttributes()['nodes]);
});

我是 Backbone 的新手,我想知道这是否是一种可以接受的用于临时检查脏模型数据的方法。或者,Backbone 是否为此目的提供了某种内置功能,而我最初的谷歌搜索尝试并没有显示出来?

4

1 回答 1

2

除了“节点”之外,我还有另一个需要监控的属性,所以我转而使用 changedAttributes():http ://backbonejs.org/#Model-changedAttributes :

var anyDirty = _.some(myCollection.models, function(model) {
    return model.changedAttributes();
});

可能使这成为一个不完美的解决方案的原因是,即使该属性已更改回其原始值,它似乎也会返回一个 changedAttributes 对象。因此,从长远来看,我几乎需要的是对原始数据进行快照并与之进行比较。尽管如此,使用 model.changedAttributes() 是比我第一次发布的更简洁的替代方法。

于 2013-08-26T15:08:37.570 回答