Geo*_*pty 5 javascript dirty-data backbone.js underscore.js
当用户在不同的Backbone集合模型之间切换时(通过单击表行),我要求用户"唠叨"未保存的更改.我用google搜索"检查主干模型脏数据"(例如)并没有找到任何确定的东西.
我使用下划线的"some"和isEqual功能完成了这一点,其方式如下,"some()"足以确定是否存在任何未保存的更改(与那些精确更改可能相反),特别是因为model属性实际上是一个对象数组.
var anyDirty = _.some(myCollection.models, function(model) {
return !_.isEqual(model.get('nodes'), model.previousAttributes()['nodes]);
});
Run Code Online (Sandbox Code Playgroud)
我是Backbone的新手,我想知道这是否是一种可接受的adhoc检查脏模型数据的方法.或者,Backbone是否为此目的提供了某种内置功能,我最初的谷歌搜索尝试没有透露?
除了“节点”之外,我还需要监视另一个属性,因此我转而使用changedAttributes(): http: //backbonejs.org/#Model-changedAttributes:
var anyDirty = _.some(myCollection.models, function(model) {
return model.changedAttributes();
});
Run Code Online (Sandbox Code Playgroud)
可能使这个解决方案不完美的是,即使属性已更改回其原始值,它似乎也会返回changedAttributes 的对象。因此,从长远来看,我几乎需要的是拍摄原始数据的快照并与之进行比较。尽管如此,使用 model.changedAttributes() 是比我第一次发布的更简洁的替代方案。
| 归档时间: |
|
| 查看次数: |
3102 次 |
| 最近记录: |