正在检查集合中是否有任何脏的主干模型数据

Checking for any dirty Backbone model data within collection

本文关键字:模型 数据 任何脏 检查 集合 是否      更新时间:2023-09-26

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

我使用下划线的"some"和isEqual功能,以如下方式完成了这项工作,"some()"足以确定是否有任何未保存的更改(而不是那些精确的更改),特别是因为model属性实际上是一个对象数组。

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

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

除了"nodes",我还有另一个需要监视的属性,所以我切换到使用changedAttributes():http://backbonejs.org/#Model-更改属性:

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

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