gpt4 book ai didi

javascript - 我如何判断 Backbone.js 中的模型是否未更改?

转载 作者:行者123 更新时间:2023-12-02 07:08:34 24 4
gpt4 key购买 nike

这可能是组件使用不当的结果,但我不这么认为。我有一个问题,View 在 Backbone JS 中更新模型并调用模型的 Set 方法,以便它可以验证它的输入。理论上,这样的操作有两个结果:错误和更改。这两个事件都按规定工作。但实际上还有第三件事:没有变化。也就是说,如果输入根本没有改变,我无法在调用 Set 后判断,因为不会抛出错误但也不会抛出 change 事件,因为实际上没有任何改变 - 但我仍然想知道这种情况.我有办法做到这一点吗?

原因是只有在没有错误发生时我才想执行一个操作,但我无法知道(没有更改事件)模型已尝试设置新值并以无结果结束因为这一切都是异步发生的。

谢谢!

最佳答案

每个 Backbone 模型都有一个 hasChanged method :

hasChanged model.hasChanged([attribute])

Has the model changed since the last "change" event? If an attribute is passed, returns true if that specific attribute has changed.

也许你可以用它来检查你的第三种可能性。

顺便说一句,回调不是异步的。错误和更改的回调在 set returns 之前被触发并返回:

set : function(attrs, options) {
//...

// Run validation.
if (!options.silent && this.validate && !this._performValidation(attrs, options)) return false;

//...

// Update attributes.
for (var attr in attrs) {
var val = attrs[attr];
if (!_.isEqual(now[attr], val)) {
now[attr] = val;
delete escaped[attr];
this._changed = true;
if (!options.silent) this.trigger('change:' + attr, this, val, options);
}
}

_performValidation 调用触发错误回调,this.trigger 调用将调用每个属性的回调。

关于javascript - 我如何判断 Backbone.js 中的模型是否未更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8204626/

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