首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flex RemoteObject -处理多个请求

Flex RemoteObject -处理多个请求
EN

Stack Overflow用户
提问于 2009-07-11 23:36:47
回答 6查看 10.4K关注 0票数 4

我有几个远程对象方法,我希望根据上下文以不同的方式响应它们,但我不希望设置一堆不同的RemoteObject别名。对此有什么建议吗?一些背景知识:

假设我有一个管理应用程序,它以不同的方式显示销售统计数据。远程方法如下所示:

代码语言:javascript
复制
<mx:RemoteObject id="rpt" destination="AMFServer">
  <mx:method name="getSalesStats" fault="getSalesStatsFault(event)" 
    result = "getSalesStatsSuccess(event)" />
</mx:RemoteObject>

getSalesStats方法以雇员ID和销售类型作为其参数。你可以这样称呼它:

代码语言:javascript
复制
rpt.getSalesStats(120, "peanuts");

public function getSalesStatsSuccess(e:ResultEvent):void {
   salesdata:ArrayCollection = e.result.rows as ArrayCollection; 
   salesGraph.dataProvider = salesdata; 
   salesGraphPanel.title = "Peanut Sales, 1990";
}

我希望能够在不同的上下文中调用此方法,有时将结果发送到图表,有时发送到数据网格;我希望能够根据用户的需要更改图表的标题和类型。我想要的一些东西可以通过计算从服务器返回的数据来实现;该对象包含报告名称,因此我可以计算该值。但有些事情需要改变,而不仅仅是基于我从服务器得到的东西。如果这是一个同步调用,那就很简单了;我会这样做:

代码语言:javascript
复制
function buttonOneClick():void {
   myData1:ArrayCollection = getSalesStats(120, "peanuts");
   myChart.dataProvider = myData1;
}

function buttonTwoClick():void {
   myData2:ArrayCollection = getSalesStats(120, "cashews");
   myDataGrid.dataProvider = myData2; 
}

我想通过远程方法将一些东西传递给响应函数,例如:

代码语言:javascript
复制
rpt.getSalesStats(120, "peanuts", "clicked button one");

但这当然会抛出一个错误,因为服务器不想要最后一个参数。有什么想法吗?我会澄清这是否令人困惑..

EN

回答 6

Stack Overflow用户

发布于 2009-09-02 19:19:04

Here is a great example of using AsyncToken with RemoteObject method calls来做您需要做的事情。

使用AsyncToken时需要记住的一点是,它是一个动态对象,您可以向它添加任何您想要的属性。响应器方法中的事件将携带对AsyncToken的引用,您可以访问动态属性来轻松识别响应的上下文。

票数 2
EN

Stack Overflow用户

发布于 2009-11-10 03:07:00

在Flex4和3.4中,使用CallResponder类:

代码语言:javascript
复制
<mx:RemoteObject id="rpt" destination="AMFServer"/>
<s:CallResponder id="toChartResponder" fault="getSalesStatsFault(event)" 
        result = "getSalesStatsToChartSuccess(event)" />
<s:CallResponder id="toDataGridResponder"fault="getSalesStatsFault(event)" 
        result = "getSalesStatsToDataGridSuccess(event)"/>

要进行调用,请将从方法调用返回的令牌分配给响应器的AsyncToken属性:

代码语言:javascript
复制
toDataGridResponder.token = rpt.getSalesStats();

这将响应定义从方法调用中分离出来,然后您可以将其包装在所需的任何逻辑中。

票数 2
EN

Stack Overflow用户

发布于 2009-07-11 23:46:17

您可以对一个remoteObject使用多个方法。

代码语言:javascript
复制
<mx:RemoteObject id="rpt" destination="AMFServer">
    <mx:method name="getSalesStatsToChart" fault="getSalesStatsFault(event)" 
        result = "getSalesStatsToChartSuccess(event)" />
    <mx:method name="getSalesStatsToDataGrid" fault="getSalesStatsFault(event)" 
        result = "getSalesStatsToDataGridSuccess(event)" />
</mx:RemoteObject>

你有什么理由不能使用这样的东西吗?

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

https://stackoverflow.com/questions/1114923

复制
相关文章

相似问题

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