В этой части мы возьмемся за валидацию.
Итак начнем с того, что мы имеем. А имеем мы следующую Backbone модель.
var Person = Backbone.Model.extend({
defaults: {
name: 'Иван Петров',
age: 40,
job: 'слесарь'
},
work: function() {
return this.get('name') + ' is working.';
}
});
Начнем с того, что будем проверять модель, на возможность задавать отрицательный возраст для нашей персоны.
Для этого создадим новый экземпляр модели Person:
var person = new Person({name: 'Николай', job: 'Веб-разработчик'});
Далее, вернемся к модели и напишем встроенный в Backbone.Model метод validate – отвечающий за валидацию атрибутов модели. Методу передается параметр attrs, это объект всех атрибутов модели. В методе поставим условие на проверку возраста. Если attrs.age будет возвращать любое falsy значение, то валидация не пройдет
var Person = Backbone.Model.extend({
defaults: {
name: 'Иван Петров',
age: 40,
job: 'слесарь'
},
validate: function( attrs ) {
console.log(attrs);
if ( attrs.age <= 0 ) {
return 'Возраст должен быть положительным!';
}
},
work: function() {
return this.get('name') + ' is working.';
}
});
Чтобы вывести сообщение, необходимо поставить прослушку на ошибки. То есть повесить обработчик, на событие ‘error’. И выведем ошибку в консоль
person.on('error', function(model, error){
console.log(error);
};
Попробуйте задать отрицательный возраст и убедитесь, в том что валидация работает
Напишем ещё одну проверку, теперь уже на имя. Оно должно быть задано.
var Person = Backbone.Model.extend({
defaults: {
name: 'Иван Петров',
age: 40,
job: 'слесарь'
},
validate: function( attrs ) {
console.log(attrs);
if ( attrs.age <= 0 ) {
return 'Возраст должен быть положительным!';
}
if ( ! attrs.name ) {
return 'Чувак, ты же не думаешь, что у персоны не может быть имени?';
}
},
work: function() {
return this.get('name') + ' is working.';
}
});
Вот так просто мы написали валидацию, для основных атрибутов нашей модели. Оставайтесь с нами! Впереди еще много интересного. Всем спасибо и до новых встреч!
Источник:loftblog