从IconItemRenderer访问全局变量

时间:2012-10-04 06:30:45

标签: flex flash-builder

是否可以在下面定义的myIconFunction中使用app.mxml中定义的全局变量?

<s:List id="list" x="7" y="10" width="463" height="661"
        creationComplete="list_creationCompleteHandler(event)" labelField="name" click="list_clickHandler(event)">
    <s:itemRenderer>
        <fx:Component>
            <s:IconItemRenderer  labelField="name"
                                 iconFunction="myIconFunction"

                                decorator="@Embed(source='assets/images/general/arrow_next.jpg')"
                                 iconWidth="50"
                                 iconHeight="50">
                <fx:Script>
                    <![CDATA[
                        private function myIconFunction(item:Object):String
                        {
                            return "http://localhost/mydatapath/" + item.imagelink;
                           // how to use this.parentApplication.dataPath here
                        }
                    ]]>
                </fx:Script>
            </s:IconItemRenderer>
        </fx:Component>
    </s:itemRenderer>

</s:List>

parentApplication.dataPath变量存储我的服务器的IP。由于我在应用程序的几个地方使用了类似的功能,因此当我从localhost移动到实际服务器时,它需要在每个地方更改IP。 使用

 this.parentApplication.dataPath + item.imagelink

给出编译时错误。 那么可以在这样的函数中使用外部/全局变量吗?

2 个答案:

答案 0 :(得分:1)

我相信您正在使用主应用程序作为模型存储库,我会选择其他地方包含的模型(可能是单例或注入实例)。无论如何,FlexGlobals.topLevelApplication包含对主应用程序的引用。

答案 1 :(得分:0)

我通过将myIconFunction设为公开

解决了这个问题
public function myIconFunction(item:Object):String
                    {
                        return this.parentApplication.dataIP + item.imagelink;
                       // works
                    }