【发布时间】:2012-04-02 03:02:35
【问题描述】:
我有以下代码:
<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
编辑:脚本块位于 FormItem 的父级中。全局变量被标记为受保护。
1) 组件的子组件可以访问组件脚本块中定义的属性吗?
2) 如果在祖先的脚本块中定义的属性的功能与类实例的属性相同(即它们在子组件的花括号中不能神奇地使用),后代通常会访问祖先还是任何其他组件实例通过其 id 属性?
【问题讨论】:
-
谢谢,Sunil D 已回答。底部的问题与问题无关,但有效。
标签: apache-flex binding