如何从商店中的模型中删除 validationError?
How to remove validationError from the model in store?
我在更新模型时出错,现在模型在 validationError
模型中出现验证错误 属性。
但即使我再次获取集合并为模型获取新数据,模型的 validationError
仍未保存。
所以在列表视图中,集合长度显示为0。即使有,我在店里也确认过。
如何在获取集合时删除模型上的 validationError
?
处理无效数据
如果数据以无效状态存储在数据库中,您可以:
- 使用工具(如 MySQL Workbench 等)从服务器 手动修复它
- 确保在后端动态发送响应前数据有效
- 在您的 Backbone 模型 中创建一个
parse
函数来处理您现在遇到的情况
一个简单的解析函数可能如下所示:
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;
},
仅当 validationError
为 falsy 时 returns 模型(默认为 null
和 thruty 每当验证规则返回错误消息字符串或数组时)。
if (!model.validationError) return model;
否则,它 returns 为假并且不会将模型添加到集合中。
我在更新模型时出错,现在模型在 validationError
模型中出现验证错误 属性。
但即使我再次获取集合并为模型获取新数据,模型的 validationError
仍未保存。
所以在列表视图中,集合长度显示为0。即使有,我在店里也确认过。
如何在获取集合时删除模型上的 validationError
?
处理无效数据
如果数据以无效状态存储在数据库中,您可以:
- 使用工具(如 MySQL Workbench 等)从服务器 手动修复它
- 确保在后端动态发送响应前数据有效
- 在您的 Backbone 模型 中创建一个
parse
函数来处理您现在遇到的情况
一个简单的解析函数可能如下所示:
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; },
仅当 validationError
为 falsy 时 returns 模型(默认为 null
和 thruty 每当验证规则返回错误消息字符串或数组时)。
if (!model.validationError) return model;
否则,它 returns 为假并且不会将模型添加到集合中。