当我在我的主干模型上调用isValid()
时,即使满足验证规则,它也始终返回undefined
。这里可能出现什么问题?
这可能是什么问题,我该如何解决?
我的模特:
Backbone.Model.extend({
validation: {
firstname: { required: true, msg: _('First Name is required').translate() }
, lastname: { required: true, msg: _('Last Name is required').translate() }
}
});
我的观点:
Backbone.View.extend({
events: {
'submit form[data-action="specify-pbt"]': 'specifyPBT'
}
, bindings: {
'[name="firstname"]': 'firstname'
, '[name="lastname"]': 'lastname'
}
, initialize: function(options) {
this.model = options.model || new PBTSpecifyModel(); // The latter condition is always met
BackboneCompositeView.add(this);
BackboneFormView.add(this);
Backbone.Validation.bind(this);
}
, specifyPBT: function (e)
{
var options = jQuery(e.target).serializeObject();
console.log("model: ");
console.log(this.model); // Outputs the model: looks all correct
console.log("isValid: ");
console.log(this.model.isValid()); // Outputs undefined
console.log("validationError: ");
console.log(this.model.validationError); // Outputs null
}
, getContext: function()
{
return {
}
}
})
});
答案 0 :(得分:0)
请在提问之前阅读文档。
isValid
model.isValid()
运行validate以检查模型状态。
validate
model.validate(attributes, options)
留下这个方法 未定义,我们鼓励您使用任何自定义覆盖它 验证逻辑
您使用的是插件,而不是主干本身的验证方法。按照插件说明检查验证状态。
答案 1 :(得分:0)
Backbone.Validation在其isValid
版本上有一个文档条目,与默认的Backbone版本不同。
检查属性,属性数组或整个属性 模型有效。
未发生验证时,
isValid
会返回undefined
model有验证(Backbone v0.9.9除外,其中验证是 从构造函数调用),否则为true或false。如果您没有传递参数,则由...定义属性 属性绑定选项将被验证。如果没有属性选项 使用时将无法验证。
var isValid = model.isValid();
如果你传递true作为参数,那么这个 将在返回结果之前强制进行验证:
var isValid = model.isValid(true);
如果你传递了一个名字 属性或名称数组,你可以检查是否 属性有效:
// Check if name is valid var isValid = model.isValid('name'); // Check if name and age are valid var isValid = model.isValid(['name', 'age']);
default isValid
of a Backbone Model将始终返回布尔值。