Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.07.2013, 05:56
Новичок на форуме
Отправить личное сообщение для wonderful fungi Посмотреть профиль Найти все сообщения от wonderful fungi
 
Регистрация: 15.07.2013
Сообщений: 2

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

Последний раз редактировалось wonderful fungi, 15.07.2013 в 06:04.
Ответить с цитированием
  #2 (permalink)  
Старый 12.09.2013, 12:39
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Могу порекомендовать вот этот плагин. Сильно упрощает валидацию.
Ответить с цитированием
  #3 (permalink)  
Старый 13.09.2013, 11:01
Новичок на форуме
Отправить личное сообщение для wonderful fungi Посмотреть профиль Найти все сообщения от wonderful fungi
 
Регистрация: 15.07.2013
Сообщений: 2

Пасибки, но что-то не охота целый плагин еще цеплять. Получилось так:

Валидацию на сохранение перевесили

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;

});

Последний раз редактировалось wonderful fungi, 13.09.2013 в 11:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Баг в backbone 1.0.0? YuriT Библиотеки/Тулкиты/Фреймворки 0 15.04.2013 11:46
Валидация пользователя по IP-адресу lazerru Общие вопросы Javascript 1 03.04.2013 12:40
backbone и проблема с this ssnikolay Библиотеки/Тулкиты/Фреймворки 4 18.09.2012 21:47
backbone и проблема с this ssnikolay Библиотеки/Тулкиты/Фреймворки 0 12.09.2012 16:28
backbone & node. Ошибка. spirits25 AJAX и COMET 1 16.04.2012 02:50