Search code examples
javascriptbackbone.js

Backbone validate method without a url defined


I have a Model as

var Info = Backbone.Model.extend({
    defaults: {
       name: '',
       email :''
    },
    initialize: function(){
        console.log('Object created');
    },
    validate: function(attr){
         if(!attr.name){
            return 'Name cannot be empty';
         },
         if(!attr.email){
            return 'Email cannot be empty';
         }
    }
});

var model = new Info();
model.set({
    name: '',
    email: ''
});
var viewClass = Backbone.View.extend({
     _modelBind: undefined,
     initialize: function(){
        this._modelBind = new Backbone.ModelBinder();
        this.render();
     },
     render: function(){
        var template = _.template($('#App1').html());
        this.$el.html(template);
        var bindings = {
           name: '[name=name]',
           email: '[name=email]'
        };
        this._modelBind.bind(model, this.el, bindings);
     },
     'events': {
        'click #btnSubmit': 'Submit'
     },
     Submit: function(){
         var response = {
             name: model.get('name'),
             email: model.get('email')
         };
         this.model.save(response);
     }
});

html is

<script type="text/template" id="App1">
     Name: <input type="text" id="name" name="name"/><br />
     Email: <input type="text" id="email" name="email" /><br />
     <input type="button" id="btnSubmit" value="Submit" />
</script>

On save event, it goes to validate method and after that it goes to the value specified in the url attribute of the model.

I don't want to specify a url parameter. Can i still use validate method without url ?


Solution

  • Call validate directly:

    var error = this.model.validate(this.model.attributes);