gpt4 book ai didi

javascript - 确定模型的当前属性是否与默认属性不同的最简单方法是什么?

转载 作者:行者123 更新时间:2023-11-30 17:15:27 25 4
gpt4 key购买 nike

我有一个具有以下默认值的模型:

Entities.OrdersFilter = Backbone.Model.extend({
defaults: {
'start-date': '2014-09-01',
'end-date': '2014-10-01',
'status': 'OUTSTANDING'
},
localStorage: new Backbone.LocalStorage('OrderFilters')
});

这三个属性表示可以由用户更改的过滤器。我需要显示一个“清除过滤器”按钮,但仅当过滤器不同于默认值时。我知道 Backbone 提供了一个 hasChanged 状态,但我相信它只会告诉我自上次 set 以来它是否发生了变化,而不是默认状态。

如何检查模型的当前属性值是否与默认值不同?

最佳答案

Backbone 已经提供了一个 changedAttributes检查当前属性是否与您在散列中提供的属性不同的方法(在您的情况下,此散列将是模型默认值)。

来自 Backbone 的 changedAttribute 文档:

Retrieve a hash of only the model's attributes that have changed since the last set, or false if there are none. Optionally, an external attributes hash can be passed in, returning the attributes in that hash which differ from the model. This can be used to figure out which portions of a view should be updated, or what calls need to be made to sync the changes to the server.

所以你可以这样写:

var MyModel = Backbone.Model.extend({
defaults: {
'start-date': '2014-09-01',
'end-date': '2014-10-01',
'status': 'OUTSTANDING'
},
changedFromDefaults: function(){
return this.changedAttributes(this.defaults) !== false;
}
});

然后像这样使用它:

var model = new MyModel();
console.log(model.changedFromDefaults()); //false

model.set('status', "FOO");
console.log(model.changedFromDefaults()); //true

model.set('status', "OUTSTANDING");
console.log(model.changedFromDefaults()); //false

我已经创建了 a fiddle所以你可以试一试。

关于javascript - 确定模型的当前属性是否与默认属性不同的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26218584/

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