У меня есть следующий код:
<fx:Script>
<![CDATA[
import shared.GlobalsManager;
import app.Globals;
protected var globals:Globals=GlobalsManager.getGlobals();
]]>
</fx:Script>
<s:FormItem label="Server or Client:">
<s:DropDownList id="serverOrClient" dataProvider="{globals.serverOrClientOptions}" />
</s:FormItem>
И соответствующий код класса Globals (Globals расширяется от GlobalsAdminGlobalS)
public class GlobalsAdminGlobalS extends GlobalsAdminS {
public static const ServerOrClient_server:String="server";
public static const ServerOrClient_client:String="client";
public static const ServerOrClient_both:String="both";
[Bindable]
public var serverOrClientOptions:ArrayCollection=new ArrayCollection(
[ServerOrClient_server,ServerOrClient_client,ServerOrClient_both]);
[Bindable]
public var appOrAdminOptions:ArrayCollection=new ArrayCollection(
[AppOrAdmin_App,AppOrAdmin_Admin]);
}
Я получаю следующее предупреждение с Flex 4.5.1 компилятор:
WARNING S:\_flash\shared\shared\src\shared\admin\global\ClassManager.mxml[28]:
Data binding will not be able to detect assignments to "globals".
<s:DropDownList id="serverOrClient" dataProvider="{globals.serverOrClientOptions}" />
Я не проверял, действительно ли он связывает.Я не вижу, в чем проблема.В соответствии с этим и ожидаемой функциональностью не нужно отмечать весь класс как привязываемый:
http://www.adobe.com/devnet/flex/articles/databinding_pitfalls.html
РЕДАКТИРОВАТЬ: блок Script находится в родительском элементеFormItem.Глобальная переменная помечена как защищенная.
1) Могут ли дочерние элементы компонента получать доступ к свойствам, определенным в блоках сценария компонента?
2) Если функциональность свойств, определенных в блоках сценария предка, совпадает со свойствами экземпляра класса (т. Е. Они не доступны магическим образом в фигурных скобках дочерних компонентов), обычно ли потомок получает доступпредок или любой другой экземпляр компонента через его свойство id?