返回BackboneJS上的model.save值

时间:2013-10-15 16:16:25

标签: javascript backbone.js

我在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');,但它不起作用,任何想法?我做错了什么?

1 个答案:

答案 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";
  }
}