Цитата:
Сообщение от incvizitor
Ага, спасибо. Только что такое "ленивый геттер" ?
А еще вот в swiz, была такая фишка, всё что попадает на сцену проижектывается автоматом. С этой фичей мы избавляемся от маппинга, но за то приобретаем плюся ДИ. Может быть такую систему можно заюзать для того что бы дочерние модели получали то что нужно?
|
Ну прям выдерну пример ленивого геттера:

Код AS3:
/**
* @private
*/
private var _user:UserData;
public function get user():UserData {
if (!this._user || !this._user.contains(this)) {
this._user = null;
var parent:DataContainer = super.parent;
while (parent) {
if (parent is IUserAsset) {
this._user = (parent as IUserAsset).user;
break;
}
if (parent is UserData) {
this._user = parent as UserData;
break;
}
parent = parent.parent;
}
}
return this._user;
}
Хотя в случае с глобальной моделью, уже инжект:

Код AS3:
/**
* @private
*/
private var _universe:UniverseData;
public function get universe():UniverseData {
return this._universe;
}
[Exclude]
public function set $universe(value:UniverseData):void {
if (this._universe == value) return;
if (!value) this.removedFromUniverse();
this._universe = value;
if (value) this.addedToUniverse();
if (this is DataContainer) {
var dc:DataContainer = this as DataContainer;
var num:int = dc.numChildren;
while (num --> 0) {
var child:Data = dc.getChildAt(num);
if (child is IUniverseAsset) child['$universe'] = value;
}
}
}