Backbone: валидация
Здравствуйте. Не могу понять в чем дело, ставлю
this.model.set({"title": this.$("input:eq(0)").val(),"count": this.$("input:eq(1)").val(),"summ": this.$("input:eq(2)").val()},{validate : true});
И в модели:
validate: function( attrs ) {
if ( attrs.count < 0 ) {
return alert('Количество должно быть больше 0!');
}
},
Валидация отрабатывает, т.е. alert выводится, а отрицательное значение полю count все равно присваивается несмотря на http://backbonejs.ru/#Model-set :blink: |
Могу порекомендовать вот этот плагин. Сильно упрощает валидацию.
|
Пасибки, но что-то не охота целый плагин еще цеплять. Получилось так:
Валидацию на сохранение перевесили
this.model.save({validate:true});
Сама валидация в модели выглядит так:
validate: function(attrs) {
if ( attrs.count < 1 ) {
return 'Количество должно быть больше 0!';
}
}
Обработка сохранения формы:
var error = model.validate(model.attributes);
if (error) {
var view = new ErrorView({model:error});
$("html").append(view.render().$el);
setTimeout(function() { view.$el.fadeOut('slow'); setTimeout(function() { view.$el.remove(); }, 2000); }, 2000);
}
Ну и вид для ошибки
define([
// Libs
'backbone',
'text!../templates/error-template.html'
], function(Backbone,Template) {
var ErrorView = Backbone.View.extend({
tagName: "div",
className: "error_view",
template: _.template(Template),
render: function() {
this.$el.html(this.template({model:this.model}));
return this;
},
});
return ErrorView;
});
|
| Часовой пояс GMT +3, время: 15:54. |