LINUX.ORG.RU

Backbobe.js - установка значений атрибута

 , ,


0

1

Всем привет!

Есть модель

	var MyModel = Backbone.Model.extend({

		initialize: function() {
			this.on("invalid", function(model, error){
				console.log(error);
			});
		},

		defaults: {
			'title': 'unnamed',
			'description': '',
			'date_begin': '',
			'date_end': '',
		},

		validate: function(attrs) {
			if (!attrs.date_begin) {
				console.log("D1");
				var d = new Date();
				var dd = d.getDate();
				var mm = d.getMonth() + 1;
				var yyyy = d.getFullYear();
				this.set({'date_begin': dd + '.' + mm + '.' + yyyy});
			}

			if (!attrs.date_end) {
				console.log("D2");
				var d = new Date();
				var dd = d.getDate();
				var mm = d.getMonth() + 1;
				var yyyy = d.getFullYear();
				this.set({'date_end': dd + '.' + mm + '.' + yyyy});
			}
		},
		
...
	});

Почему не получается установить значение атрибутов из функции valdate. Тут, наверное, возникает кака-то путаница, так как метод set, на сколько мне известно, тоже выполняет метод validate. Получается какая-то рекурсия. Как кто валидирует модели? Устанавливаете ли вы валидные значения для атрибутов модели из validate()?


как костыль задавать флаг, что мы в режиме проверки и если true делать return. можно еще посмотрить в доки бэкбона, может там это решено уже.

anonymous ()

validate() она на то и validate, чтобы при изменении атрибута проверять его, и пропускать дальше или нет.

как вариант, добавь слушателя на изменение этих атрибутов, и вызывай эту validateDate()

morisRavel ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.