gpt4 book ai didi

javascript - 如何从商店中的模型中删除validationError?

转载 作者:行者123 更新时间:2023-11-28 04:45:33 25 4
gpt4 key购买 nike

我在更新模型时出错,现在模型的 validationError 模型属性中存在验证错误。

但即使我再次获取集合并获取模型的新数据,模型的 validationError 也没有消失。

所以在 ListView 中,集合长度显示为0。即使有,我也在商店确认过。

当我获取集合时,如何删除模型上的validationError

最佳答案

处理无效数据

如果数据以无效状态存储在数据库中,您可以:

  • 使用工具(例如 MySQL Workbench 等)从服务器端手动修复问题
  • 在发送响应之前在后端动态确保数据有效
  • 创建一个 parse您的 Backbone 模型中的函数处理您现在的情况

一个简单的解析函数可能如下所示:

var MyModel = Backbone.Model.extend({
/**
* Called with the raw response data
*/
parse: function(data, options) {
// fix the problem within the data object.
if (_.has(data, 'myAttribute')) {
data.myAttribute = /* correction here */
}
// return the fixed data object
return data;
}
});

为什么集合长度为零?

这是因为集合将接收到的数据(本地作为参数或在提取之后)发送到其 private _prepareModel method确保数据是有效的 Backbone 模型。

_prepareModel: function(attrs, options) {
if (this._isModel(attrs)) {
if (!attrs.collection) attrs.collection = this;
return attrs;
}
options = options ? _.clone(options) : {};
options.collection = this;
var model = new this.model(attrs, options);
if (!model.validationError) return model;
this.trigger('invalid', this, model.validationError, options);
return false;
},

仅当 validationErrorfalsy 时才返回模型(默认为 null,只要验证规则为 thruty返回错误消息字符串或数组)。

if (!model.validationError) return model;

否则,它返回 false 并且不会将模型添加到集合中。

关于javascript - 如何从商店中的模型中删除validationError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43405244/

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