您好,我一直在使用Flash Builder 4.6开发Flex Mobile应用程序。
我的项目中有2个mxml'views'。在一个mxml文件中,我有一个抓取xml数据的函数。 在我的另一个mxml文件中,我有一个刷新按钮,当按下时,它被调用来调用第一个mxml文件中的函数,以便再次获取xml数据。 我不知道如何从它所在的mxml文件外部调用该函数。
我感谢任何帮助。谢谢!
[更新#2] *
我想我应该分享一些关于我的问题的更多细节。
RedditReaderHomeView.mxml
<s:SplitViewNavigator width="100%" height="100%" id="splitViewNavigator" autoHideFirstViewNavigator="true">
<s:ViewNavigator id="redditList" firstView="views.subredditList" width="300" height="100%"/>
<s:ViewNavigator id="redditFeed" firstView="views.redditFeed" width="100%" height="100%">
<s:actionContent.landscape>
<s:Button id="refreshButtonlLandscape" icon="@Embed('assets/refresh160.png')" click="refreshRSS()" />
</s:actionContent.landscape>
<s:actionContent.portrait>
<s:Button id="refreshButton" icon="@Embed('assets/refresh160.png')" />
<s:Button id="navigatorButton" label="Search" click="splitViewNavigator.showFirstViewNavigatorInPopUp(navigatorButton)" />
</s:actionContent.portrait>
</s:ViewNavigator>
</s:SplitViewNavigator>
redditFeed.mxml
protected function myList_creationCompleteHandler(url:String):void
{
getRedditFeedResult.token = redditFeedGrabber.getRedditFeed(url);
getRedditFeedResult.addEventListener(ResultEvent.RESULT,busyOff);
}
我希望这有助于清除我想要做的事情的混乱。我假设解决方案非常简单,但唉,我是一个新手程序员,刚接触Flex,所以我正在学习绳索。任何帮助表示赞赏。谢谢!
答案 0 :(得分:1)
如果你有一个视图实例,那么就这样做:
myViewInstance.myPublicFunction();
在MXML中,MXML标记的id元素用于在ActionScript中引用视图。既然你没有'描述你的建筑;目前还不清楚一种观点如何能够调用另一种观点。
如果需要触发调用的视图是具有调用功能的视图的父视图,那么您可以使用上述方法。
如果需要触发调用的视图是具有调用函数的视图的子视图,那么您应该从父级可以侦听的“子级”调度事件。在事件处理程序中,您将触发调用。
如果需要触发的视图和具有调用功能的视图都是同一父节点的子节点;然后你应该从“触发器”视图调度一个事件,在父节点中监听它,然后使用该事件监听器进行调用(使用与我上面解释的类似的代码)。
如果你有这两种观点的更复杂的架构;那么你应该研究一些方法来封装“远程调用”功能,比如封装到服务类中。许多框架提供了跨多个类共享该服务类和/或结果的方法。 (MXML文件是类)。
答案 1 :(得分:0)
通过让子视图明确了解其父视图,有两种方法可以做到这一点而不会进入糟糕的体系结构: