Показать сообщение отдельно
  #7 (permalink)  
Старый 22.02.2013, 10:12
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от dmitry111
Хотел полностью отделить DOM от кода, вроде получилось.

// Инициализация
	App.prototype.init = function () {
		var self = this;

		this.switchArr[this.activeDisc].className = "active";
		this.updateData(this.switchArr[this.activeDisc].value);

		App.utils.addEvent(this.itemsBox, "mousedown", function (e) {
			self.filterEvent(e);
		}, false);


не получилось, сэр. даже совсем.

сделай класс, который будет оперировать только данными - никаких элементов, и даже классов. никакого намёка на DOM.

DOM замешивай либо в дочернем классе, либо в обработчиков событий.

ООП - это во многом событийное программирование

т.е. не должно быть таких методов :
// Показывает ошибку при заполнении формы
	App.prototype.formValidate.showError = /* DOM SHOW BLA BLA BLA  */


а он должен быть заменен на микшированный EventEmitter (из Node.js ... поищи, довольно удобная штука), или любой другой класс, описывающий паттерн "подписчик".

тогда у тебя будет такая вещь:

// мне пофигу на ошибки в форме.
/* ничего нет! */


// я хочу выводить ошибки алертом, как в суровых 00
myForm.on("inputerror", function (e) {
    if (e instanceof window["Криворукий пользователь"]) {
        alert(e.message);
    }
});

Последний раз редактировалось melky, 22.02.2013 в 10:16.
Ответить с цитированием