Flex AS3 - создание динамического свойства, а затем привязка к нему элемента управления - PullRequest
1 голос
/ 06 мая 2010

Я пытаюсь: 1) создать динамическое свойство 2) привязать это свойство к метке

Это прекрасно работает для "запечатанных свойств", но для динамических свойств, по-видимому, не происходит никаких событий. Являются ли динамические свойства непривлекательными, а не связываемыми?

var myObj:MyType = new MyType(); // MyType is dynamic
myObj["myDynamicPropertyName"] = "initialized";

BindingUtils.bindProperty(myLabel, "data", myObj, repeatedLabel.name); // myLabel now displays "initialized"

myObj["myDynamicPropertyName"] = "changed";  // myLabel still displays "initialized", it should say "changed" !!!

Ответы [ 3 ]

1 голос
/ 06 мая 2010

mwilson: нет предупреждений компилятора

Кори Петоски: я пытался это раньше, метод вызывается первый раз, когда я устанавливаю динамическое свойство, но не второе.

0 голосов
/ 07 мая 2010

Вы можете обернуть ваш объект в mx.utils.ObjectProxy , а затем использовать эту оболочку для размещения ваших слушателей. Однако вам также следует использовать эту оболочку вместо исходного объекта, чтобы обновить значения этих свойств, чтобы сработали правильные события привязки.

0 голосов
/ 06 мая 2010

Попробуйте BindingUtils.bindProperty (myLabel, "data", myObj, {name: repeatLabel.name, getter: function (host) {return host [repeatLabel.name];}});

Динамические свойства не отображаются в describeType, поэтому, очевидно, система не может связываться с ними.

Если ваш тип что-то еще не расширяет, вы можете расширить Proxy и переопределить функцию setProperty для отправки событий изменения данных. Если это уже что-то расширяет ... вам придется найти другой обходной путь.

...