2015-04-28 14 views
1

我寫過這段代碼。請幫助我通過正確的驗證。我正在嘗試這個,但驗證沒有被調用。 我從視圖調用模型,但沒有調用。 看看這個。我錯過了一件非常簡單的事情。 請幫助這裏簡單形式的主幹驗證問題

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>page1</title> 
    <meta name="description" content=""> 
    <meta name="keywords" content=""> 
    <!--[if lt IE 9]> 
     <script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
    <script src="handlebars.js"></script> 
    <script src="underscore.js"></script> 
    <script src="backbone.js" type="text/javascript"></script> 
    <script type="text/javascript" src="backbone-validation.js"></script> 
    </head> 
    <body> 
     <form action="#"> 
      UserName: &nbsp;<input id="username" type="text" name="username" /> 
      <br /> 
      Password: &nbsp;<input id="password" type="password" name="password" /> 
      <br /> 
      Email: &nbsp;<input id="email" type="text" name="email" /> 
      <br /> 
      <input type="submit" id="register" value="Register" /> 
     </form> 

     <script type="text/javascript"> 
     $('#register').click(function(){ 
     var myModel = Backbone.Model.extend({ 
      validation: { 
      username:{ 
      required: true, 
      msg: 'Please enter Name' 
      }, 
      email: [{ 
       required: true, 
       msg: 'Please enter an email address' 
      },{ 
       pattern: 'email', 
       msg: 'Please enter a valid email' 
      }] 
      } 
     }); 
     //var myModel = new Backbone.Model(); 
     var MyView=Backbone.View.extend({ 
     initialize: function(){ 
     Backbone.Validation.bind(this); 
      } 
     }); 
     }); 
     //var myview=new MyView(); 

     </script> 
    </body> 
</html> 
+0

你實際上並沒有創建一個新的模型實例的任何地方。 'Backbone.Model.extend()'只是建立它不創建它的實例的模型。 – Levsero

回答

0

幾件事情:

  1. 手柄登記你的觀點不是點擊綁定功能
  2. 對於模型validate()裏面應該有Backbone.Validation
  3. 如果延長你只是使用空白綁定,你需要在視圖上有this.model

以下是帶有一些修補程序的僞代碼。嘗試一下。


var myModel = Backbone.Model.extend({ 
    initialize: function() { 
    // your model needs to have Validation Methods on it first 
    _(this).extend(Backbone.Validation); 
    }, 
    validation: { 
    username:{ 
     required: true, 
     msg: 'Please enter Name' 
    }, 
    email: [{ 
     required: true, 
     msg: 'Please enter an email address' 
    },{ 
     pattern: 'email', 
     msg: 'Please enter a valid email' 
    }] 
    } 
}); 

//var myModel = new Backbone.Model(); 
var MyView = Backbone.View.extend({ 
    events: { 
    'click #register': 'onRegister' 
    }, 
    initialize: function(options){ 
    // Check if your this.model is set here 
    }, 

    onRegister: function() { 
    // this model is updated 
    // write your own 
    // validation will be triggered on save 
    // 
    this.model.save(); 
    // or 
    // this.model.validate(); 

    }, 

    render: function() { 
    // you need to have a this.model 
    // on your view in order to perform binding 
    Backbone.Validation.bind(this); 
    } 
}); 



var myview = new MyView({model:new MyModel()}); 
myview.render(); 

當然和閱讀文檔上Backbone.Validation