我在Backbone视图上有功能:
onRender: function() {
this.ui.form.on('submit', function() {
mylogin = new login();
valid = mylogin.save({boxid:$("#boxid").val(),password:$("#passwordid").val(),validate:true});
if(valid != false)
{
vent.trigger('navigate', 'home');
}
return false;
});
和模型上的这个功能:
validate: function(attrs, options){
if(attrs.boxid.length < 10)
{
return false;
}
else if(attrs.password.length < 10)
{
return false;
}
else
{
if((attrs.boxid!=myBoxid)||(attrs.password!=myPassword))
{
return false;
}
else
{
return true;
}
}
我想在验证正确时触发此vent.trigger('navigate', 'home');
,但它不起作用,任何想法?我做错了什么?
答案 0 :(得分:2)
我认为你在关于骨干validate
如何运作的假设中有一个非常常见的错误。如果验证函数返回任何内容,则表示存在错误。所以...首先,你是落后的。当验证失败时,您将返回false,并且您应该返回一条消息,说明它失败的原因。此外,当您执行validate:true
时,这不是您通过的选项,您实际上是在名为validate的模型上设置属性。选项作为第二个对象传递。
仔细阅读这些文档:http://backbonejs.org/#Model-validate
尝试做这样的事情。抱歉没有更多信息,这是我能帮到的最好的。欢呼声。
查看:
onRender: function() {
this.ui.form.on('submit', function() {
mylogin = new login();
mylogin.save({
boxid:$("#boxid").val(),
password:$("#passwordid").val()
});
if(!myLogin.validationError) {
vent.trigger('navigate', 'home');
}
return false;
});
}
型号:
validate: function(attrs, options){
if(attrs.boxid.length < 10) {
return "user id must be more than 10 characters";
}
if(attrs.password.length < 10) {
return "password must be more than 10 characters";
}
if((attrs.boxid!=myBoxid)||(attrs.password!=myPassword)) {
return "Your login credentials are incorrect";
}
}