首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex mx:XMLList和fx:XMLList之间的不同行为

Flex mx:XMLList和fx:XMLList之间的不同行为
EN

Stack Overflow用户
提问于 2011-03-18 05:50:22
回答 1查看 1.2K关注 0票数 2

在flex3项目中运行以下代码(请注意第六项中的enabled属性):

代码语言:javascript
复制
    <mx:XMLList id="items">
            <menuitem label="file">
                <menuitem label="file.new" data="New"/>
                <menuitem label="file.saveAs" data="SaveAs"/>
                <menuitem label="file.open" data="Open"/>
                <menuitem label="file.close" data="Close"/>
            </menuitem>
            <menuitem label="business">
                <menuitem label="business.add" data="AddBusiness"/>
                <menuitem label="business.delete" enabled="{someproperty.selected}" data="DeleteBusiness"/>
            </menuitem>
            <menuitem label="help">
                <menuitem label="help.about" data="About" />
            </menuitem>
        </mx:XMLList>

但是,fx:XMLList不能以这种方式处理绑定。这段代码给出了一个编译错误:

代码语言:javascript
复制
        <fx:XMLList id="items">
            <menuitem label="file">
                <menuitem label="file.new" data="New"/>
                <menuitem label="file.saveAs" data="SaveAs"/>
                <menuitem label="file.open" data="Open"/>
                <menuitem label="file.close" data="Close"/>
            </menuitem>
            <menuitem label="business">
                <menuitem label="business.add" data="AddBusiness"/>
                <menuitem label="business.delete" enabled="{someproperty.selected}" data="DeleteBusiness"/>
            </menuitem>
            <menuitem label="help">
                <menuitem label="help.about" data="About" />
            </menuitem>
        </fx:XMLList>

1120:访问未定义的属性项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-18 08:09:42

我假设你是在严格模式下编译你的项目,并且你正在直接使用项目XMLList作为某个组件的dataProvider (至少这是我发现的重现问题的唯一方法),如下所示:

代码语言:javascript
复制
<s:List>
    <s:dataProvider>
        <s:XMLListCollection>
            <fx:XMLList id="items">
                <menuitem label="file">
                    <menuitem label="file.new" data="New"/>
                    <menuitem label="file.saveAs" data="SaveAs"/>
                    <menuitem label="file.open" data="Open"/>
                    <menuitem label="file.close" data="Close"/>
                </menuitem>
                <menuitem label="business">
                    <menuitem label="business.add" data="AddBusiness"/>
                    <menuitem label="business.delete" enabled="{someproperty.selected}" data="DeleteBusiness"/>
                </menuitem>
                <menuitem label="help">
                    <menuitem label="help.about" data="About"/>
                </menuitem>
            </fx:XMLList>
        </s:XMLListCollection>
    </s:dataProvider>
</s:List>

这将重现您提到的相同错误(#1120)。为了解决这个问题,您必须在<fx:Declarations>块中的容器(在本例中是一个List)之前声明XMLList。这样,您就可以确保在创建容器之前,项引用就已经存在,这是严格模式在编译期间验证的内容。

代码语言:javascript
复制
<fx:Declarations>
    <fx:XMLList id="items">
        <menuitem label="file">
            <menuitem label="file.new" data="New"/>
            <menuitem label="file.saveAs" data="SaveAs"/>
            <menuitem label="file.open" data="Open"/>
            <menuitem label="file.close" data="Close"/>
        </menuitem>
        <menuitem label="business">
            <menuitem label="business.add" data="AddBusiness"/>
            <menuitem label="business.delete" enabled="{someproperty.selected}" data="DeleteBusiness"/>
        </menuitem>
        <menuitem label="help">
            <menuitem label="help.about" data="About"/>
        </menuitem>
    </fx:XMLList>
</fx:Declarations>

<s:List>
    <s:dataProvider>
        <s:XMLListCollection source="{ items }"/>
    </s:dataProvider>
</s:List>

更新:如果你没有启用编译器的严格模式选项,这也会产生#1120错误。只需在<fx:Declarations>块中声明XMLList,它就会正常工作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5345713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档