Проблема решена, см. Ниже
Вопрос
Я работаю в Flex Builder 3, и у меня есть два класса ActionScript 3 (ABC
и XYZ
) и проект Flex MXML (main.mxml
). У меня есть экземпляр XYZ
как свойство ABC
, и я хочу, чтобы свойства XYZ
были видны ([Bindable]
) в проекте Flex в текстовых элементах управления.
К сожалению, только prop3
и prop4
обновляются при их изменении. Я вошел в отладчик, чтобы убедиться, что prop1
и prop2
изменяются, но они не обновляются в текстовых элементах управления.
Вот код:
ABC.as
[Bindable]
public class ABC extends UIComponent {
/* Other properties */
public var xyz:XYZ = new XYZ();
/* Methods that update xyz */
}
XYZ.as
[Bindable]
public class XYZ extends Object {
private var _prop1:uint = 0;
private var _prop2:uint = 0;
private var _prop3:uint = 0;
private var _prop4:uint = 1;
public function get prop1():uint {
return _prop1;
}
public function set prop1(value:uint):void {
_prop1 = value;
}
/* getters and setters for prop2, prop3, and prop4 */
}
main.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:com="com.*" />
<com:ABC id="abc" />
<mx:Text text="{abc.xyz.prop1}" />
<mx:Text text="{abc.xyz.prop2}" />
<mx:Text text="{abc.xyz.prop3}" />
<mx:Text text="{abc.xyz.prop4}" />
</mx:Application>
Ответ
Это не видно из небольших фрагментов кода, которые я разместил, но из XYZ
я обновлял _prop3
и _prop4
, используя их установщики. В отличие от этого, я обновил _prop1
и _prop2
через их частные переменные, а не через их установщики. Таким образом, свойства 1 и 2 не отправляли события обновления.