PDA

Просмотр полной версии : Как правильно отследить изменение [Bindable] переменной?


Gaen
04.09.2009, 15:23
[Bindable(event="optionsChange")]
public var options :XML;

//Этот код висит на событии creationComplete
private function bindOptions():void{
this.addEventListener("optionsChange", this.updateOptions);
}//bindOptions

private function updateOptions(e:Event):void{
trace('hi!');
}//updateOptions



Извне напрямую присваиваю свойству options непустой XML, трейс не выводится.
Что я делаю не так?

fljot
04.09.2009, 17:25
есть два варианта связываний.
1. создать геттер и сеттер на options и в сеттере диспатчить событие optionsChanged, тогда это свойство станет байнабловым
2. можно воспользоваться классом BindingUtils

в вашем случае не очень понятно, хотите ли вы использовать внешний байндинг для options.. думаю, BindingUtils решит вашу задачу (можно устроить вызов updateOptions)

wvxvw
04.09.2009, 17:45
Только не пробуйте биндить рутовый элемент ХМЛя, это все равно не работает... да, и еще вариант биндинг можно к функции прикрутить, если нужно функцию вызвать, когда меняется значение (не обязательно сеттер).
Пример:
http://livedocs.adobe.com/flex/3/html/help.html?content=databinding_4.html