2013-12-09 2 views
1

Я следую этим лекциям https://tutsplus.com/course/connected-to-the-backbone/, чтобы узнать основную информацию, и я пришел к своему знанию о том, что функция (если существует) вызывается всякий раз, когда мы устанавливаем значение любой переменной внутри этой модели. Я написал эту модель:Валидация в магистральных моделях

var PersonModel = Backbone.Model.extend({ 

    defaults: { 
     name: 'Kamran Ahmed', 
     rollNo: '1224', 
     email: '[email protected]' 
    }, 

    validate: function (attrs){ 
     if (!attrs.name) { 
      return 'You must provide a name'; 
     } 
     if (attrs.rollNo < 0) { 
      return 'Roll Number must be positive'; 
     } 
    } 
}); 

И я пытаюсь следующее:

var person = new PersonModel(); 
person.set('rollNo', -100) // trying to violate the validation rule 

Но он никогда не проверяет то есть значение -100 по-прежнему назначается rollNo. Кроме того, он сохраняет возвращающий весь объект, когда я делаю person.set('rollNo', -100), тогда как он должен возвращать значение false, когда нарушается правило проверки. Что я здесь делаю неправильно? Почему проверка не выполняется?

ответ

1

Из документации:

By default validate is called before save, but can also be called before set if 
{validate:true} is passed. 

Таким образом, вы должны использовать его как:

person.set({'rollNo':-100},{validate:true}) 

Вы можете прочитать на validate для Backbone.Model.

В качестве примечания стороны: Похоже, что учебное пособие предназначено для Backbone 0.9.2, а текущая версия - 1.1.0. Рассмотрите возможность поиска обновленного учебника или прочитайте Change Log.

Смежные вопросы