0

是否可以在下面定义的 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

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

4

2 回答 2

1

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

于 2012-10-04T06:47:52.840 回答
0

我通过公开 myIconFunction 解决了这个问题

public function myIconFunction(item:Object):String
                    {
                        return this.parentApplication.dataIP + item.imagelink;
                       // works
                    }
于 2012-10-04T07:35:12.710 回答