Javascript 主干仅在save中验证单个属性
我有一个模型有两个属性。让我先解释一下Javascript 主干仅在save中验证单个属性,javascript,validation,backbone.js,backbone-model,Javascript,Validation,Backbone.js,Backbone Model,我有一个模型有两个属性。让我先解释一下 Backbone.Model.extend({ validation: { username: [ {required: true, msg: 'Enter email/username.'}, ], password: [ {required: true,msg: 'Enter password.'},
Backbone.Model.extend({
validation: {
username: [
{required: true, msg: 'Enter email/username.'},
],
password: [
{required: true,msg: 'Enter password.'},
{minLength:20,msg: 'Incorrect password length.'}]
},
});
我想在保存函数中验证单个属性。你知道吗?
也就是说,如果我的用户名和密码字段为空,则仅对用户名发生错误
我用的是脊梁骨
谢谢您可以使用两种方法: 方法1 我认为最简单的方法是在验证用户名之前不设置密码字段。引自: 什么在什么时候得到验证 如果您使用的是主干网v0.9.1或更高版本,则将验证模型中的所有属性。但是,如果从未设置过实例名称(无论是显式设置还是使用默认值),则在设置该属性之前将不会验证该属性 这在填充表单时验证表单时非常有用,因为您不想提醒用户尚未输入的输入中的错误 如果需要验证整个模型(无论是否设置了属性),可以对模型调用validate()或isValid(true) 所以,不要对整个模型调用validate。首先在用户名字段调用它,然后在密码字段调用它 此外,在验证用户名之前,不要在模型中设置密码字段 方法2 另一种方法是使用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.'}]
},
});
我很确定这就是原因,尽管我不确定答案中的语法是否正确。您可以使用两种方法: 方法1 我认为最简单的方法是在验证用户名之前不设置密码字段。引自: 什么在什么时候得到验证 如果您使用的是主干网v0.9.1或更高版本,则将验证模型中的所有属性。但是,如果从未设置过实例名称(无论是显式设置还是使用默认值),则在设置该属性之前将不会验证该属性 这在填充表单时验证表单时非常有用,因为您不想提醒用户尚未输入的输入中的错误 如果需要验证整个模型(无论是否设置了属性),可以对模型调用validate()或isValid(true) 所以,不要对整个模型调用validate。首先在用户名字段调用它,然后在密码字段调用它 此外,在验证用户名之前,不要在模型中设置密码字段 方法2 另一种方法是使用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.'}]
},
});
我很确定这就是原因,尽管我不确定答案中的语法是否正确。要使用主干验证单个或多个属性。验证,请使用以下代码:
yourModel.isValid('username') // or
yourModel.isValid([ 'attribute1', 'attribute2' ])
要使用主干验证单个或多个属性,请使用以下代码:
yourModel.isValid('username') // or
yourModel.isValid([ 'attribute1', 'attribute2' ])
谢谢@jonnybot,我们能做到。但我认为这不是一个合适的解决方案,应该有一些选择。谢谢@jonnybot,我们可以做到。但我认为这不是一个合适的解决方案,应该有一些选择。