2015-11-11 2 views
0

Всякий раз, когда я устанавливаю атрибут возраста в отрицательное значение, он не возвращает значение false. Я также попытался выполнением этого кода в консоли и до сих пор ничего не происходитЯ не могу выполнить проверку в Backbone.js.

<script> 
     var Human = Backbone.Model.extend({ 
     // If you return a string from the validate function, 
     // Backbone will throw an error 
     defaults: { 
     name: 'Guest user', 
     age: 23, 
     occupation: 'worker' 
     }, 
     validate: function(attributes){ 
     if(attributes.age < 0){ 
      return "Age must me positive"; 
     } 
     if(!attributes.name){ 
      return 'Every person must have a name'; 
     } 

     }, 
    work: function(){ 
     return this.get('name') + ' is working'; 
     } 
    }); 



     var human = new Human; 

     human.set("age", -10); 

    human.on('error', function(model, error){ 
     console.log(error); 
     }); 

    </script> 

ответ

2

Есть несколько вещей неправильно с вашим кодом:

  1. события для валидации invalid, error для запросов AJAX ,
  2. Проверка по набору не происходит по умолчанию, вам необходимо передать { validate: true } в качестве опции.
  3. Вы слушаете настройку события AFTER, поэтому она не будет вызвана для этого набора.

т.е:

human.on('invalid', function(model, error) { 
    console.log(error); 
}); 

human.set("age", -10, { validate: true });