我已经写了这段代码。请帮助我进行正确的验证。我正在尝试此操作,但未调用验证。
我已经从视图中调用了该模型,但是没有得到调用。
看看这个。我很容易错过一些事情。
请帮忙

<!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>

最佳答案

这里的几件事:


使用视图不在视图绑定功能内进行注册
对于要validate()的模型,应使用Backbone.Validation进行扩展。
如果仅使用空白绑定,则需要在视图上显示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上的文档

09-16 08:25
查看更多