Тема: Хорошее MVC
Показать сообщение отдельно
Старый 22.09.2010, 14:52
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 7  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Спасибо, вроде прояснилось.
Еще вопрос: каким образом из дочерней триады достучаться до родительской модели?
Сейчас у меня все устроено вот так:
Код AS3:
/**
 * Установка свойства. Если в качестве значения передать null, свойство удаляется.
 * @param	name - имя свойства
 * @param	value - значение
 */
public function setProperty(name:String, value:*){
 
	//Запоминаем старое значение
	var oldValue	:*	=	this.data[name]?this.data[name]:null;
 
	//Если новое значение такое же - ничего не делаем
	if(value == oldValue) return;
 
	//При получении null удаляем свойство
	if(oldValue && (value == null)){
 
		//Если это дочерняя модель - отписываемся от неё
		if(oldValue is Model){
 
			oldValue.removeEventListener(ModelChangeEvent.PROPERTY_CHANGE, this.dispatchEvent);
 
		}//if
 
		//Сносим
		delete this.data[name];
 
	}else{
 
		//Устанавливаем значение
		this.data[name]	=	value;
 
		//Если это дочерняя модель - подписываемся на её события
		if(value is Model){
 
			value.addEventListener(ModelChangeEvent.PROPERTY_CHANGE, this.dispatchEvent);
 
		}//if
 
	}//if
 
	//Сообщаем об изменении
	this.dispatchEvent(new ModelChangeEvent(ModelChangeEvent.PROPERTY_CHANGE, name, oldValue, value));
 
}//setProperty
Т.е. если в качестве значения передать модель, то она автоматически начнет слушаться для всплывания событий. И если дочерняя модель получает ссылку на родительскую, то она начинает её слушать, и при любом изменении одной из них получается перполнение стека от событий, которыми они друг друга закидывают.
Пока сделал ссылку на родителя просто отдельным полем.
__________________
тонкий тролль, осеянный благодатью