0

我在主干视图上有功能:

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');在验证正确时触发它,但它不起作用,知道吗?我做错了什么?

4

1 回答 1

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";
  }
}
于 2013-10-15T17:05:34.407 回答