我在更新模型时犯了一个错误,模型现在在validationError
模型属性中有验证错误。
但即使我再次获取该集合并获得该模型的新数据,该模型的validationError
也未存在。
因此在列表视图中,集合长度显示为0.即使它有一个,我也在商店中确认了它。
获取集合时,如何删除模型上的validationError
?
答案 0 :(得分:0)
如果数据存储在具有无效状态的数据库中,您可以:
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,以确保数据是有效的骨干模型。
_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 (默认为null
且 thruty ,只要验证规则返回错误消息字符串或数组)。
if (!model.validationError) return model;
否则,它返回false并且不会将模型添加到集合中。