我有一个有2个属性的模型。我先解释一下。
Backbone.Model.extend({
validation: {
username: [
{required: true, msg: 'Enter email/username.'},
],
password: [
{required: true,msg: 'Enter password.'},
{minLength:20,msg: 'Incorrect password length.'}]
},
});
我想在保存功能中验证单个属性。你有什么主意吗? 意思是,如果我的用户名和&密码字段为空,则只应出现用户名错误。
我正在使用backbone.validation主干。
由于
答案 0 :(得分:3)
要使用Backbone.Validation验证单个或多个属性,请使用以下代码:
yourModel.isValid('username') // or
yourModel.isValid([ 'attribute1', 'attribute2' ])
答案 1 :(得分:1)
您可以使用两种方法:
我认为最简单的方法是在验证用户名之前不要设置密码字段。引用FAQ:
什么时候得到验证?
如果您使用的是Backbone v0.9.1或更高版本,则将验证模型中的所有属性。但是,如果从未设置过名称(显式或默认值),则在设置之前不会验证该属性。
在填充表单时验证表单时非常有用,因为您不想提醒用户输入尚未输入的错误。
如果您需要验证整个模型(两个属性是否已设置),您可以在模型上调用validate()或isValid(true)。
所以,不要在整个模型上调用validate。首先在用户名字段中调用它,然后在密码字段中调用它。
此外,在验证用户名之前,请不要在模型中设置密码字段。
另一种方法是使用FAQ中描述的条件验证:
您是否支持条件验证?
是的,好吧,有点儿。您可以通过将所需的验证程序指定为函数来进行条件验证。
因此,您的代码可能类似于:
Backbone.Model.extend({
validation: {
username: [
{required: true, msg: 'Enter email/username.'},
],
password: [
{required: function(val, attr, username) {
return Bool(username); //some code here- return true if username is set, false if it is not. This rough example may not work in the real world.
},msg: 'Enter password.'},
{minLength:20,msg: 'Incorrect password length.'}]
},
});
我很确定这是Ulugbek Komilovich is suggesting,但我不确定答案中的语法是否正确。
答案 2 :(得分:0)
M = Backbone.Model.extend({
validation: {
username: [
{required: true, msg: 'Enter email/username.'},
],
password: function(value, attr, computedState) {
// new M(this.get('username')); //or use second way
if(this.get('username')) {
return 'Enter email/username.';
}
// other checks
}
},
});