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, время: 20:08. |