首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >flex或amfphp中的VOs是什么?

flex或amfphp中的VOs是什么?
EN

Stack Overflow用户
提问于 2009-05-16 08:51:28
回答 3查看 1.1K关注 0票数 1

事情就是这样的。我正在获取XML数据,我需要等待它被解析,然后在解析完成后从我的库中分派事件。

首先,在这种情况下,有没有办法避免库中的事件?

EN

回答 3

Stack Overflow用户

发布于 2009-05-17 17:12:43

如果你可以使用AMFPHP,我强烈推荐它。可以在服务器和actionscript中定义值对象(VO)。这将允许您在客户端和服务器之间来回传递强类型对象。根本不需要解析、使用e4x或遭受那样的痛苦。

VOs也被称为DTO (data transfer objects,数据传输对象),其中booth是面向对象的设计模式。

票数 1
EN

Stack Overflow用户

发布于 2009-05-17 17:04:38

如果您从flex获得xml数据形式的结果,我猜您使用的是获得XML的HTTPService,所以您要访问ResultEvent的result属性中的数据。

例如:

代码语言:javascript
复制
private function resultHandler(e:ResultEvent):void{}

你会得到你的数据:

代码语言:javascript
复制
private function resultHandler(e:ResultEvent):void{
   var tempCollection:ArrayCollection = new ArrayCollection();
   tempCollection = e.result.someDataObject as ArrayCollection;
}

这将是您将从xml获得的数据设置到VO的位置

代码语言:javascript
复制
private function resultHandler(e:ResultEvent):void{
  var tempCollection:ArrayCollection = new ArrayCollection();
  tempCollection = e.result.someDataNode as ArrayCollection;
for each(var item:Object in tempCollection){
  var myVO:VO = new Image();
  myVO.firstProperty = item.firstProperty;
  myVO.secondProperty = item.secondProperty;
  myVOCollection.addItem(myVO);
 }
}

想法很简单……VO只是一个自定义对象:您创建的类扩展了对象,其目的是存储来自外部数据源(例如,您的xml结果)的值。因为您使用的自定义类比使用动态类更快,并且在读取代码和调试时有很大帮助(您可以进行数据类型检查等)。

它们可以是任何东西:商店里的产品,画廊里的照片,等等。

在本例中,我假设someDataNode是xml中的一个节点,myVOCollection是数据的ArrayCollection,依此类推。

因此,在这种情况下,VO应该是这样的:

代码语言:javascript
复制
package{
class VO{

private var _firstProperty:String;
private var _secondProperty:String;

public function VO(firstProp:String=null,secondProp:String=null){
_firstProperty = firstProp;
_secondProperty = secondProperty;
}

public function get firstProperty():String{
return _firstProperty;
}

public function set firstProperty(value:String):void{
_firstProperty = value;
}

public function get secondProperty():String{
return _secondProperty;
}

public function set secondProperty(value:String):void{
_secondProperty = value;
}

}
}

您的Model类可能会管理数据的加载和解析,一旦完成,它将分派一个事件,让应用程序知道所请求的数据是可用的。

用尽可能少的话说,flex中的valueobject将是一个代表一项数据的actionscipt类。使用one表示将通用对象(来自外部源)映射到其actionscript表示形式。

没什么花哨的。

希望能有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2013-01-27 12:57:09

当与外部对象结合使用时,VO将允许数据从一个对象(以一种语言)传输到等效对象(以另一种语言)。

因此,与解析XML、e4x等不同,您可以让flex通过网关(即ZendAMF、amfPHP、sabreAMF等)直接与PHP对话。

在这个站点上有更多的信息来解释如何做到这一点(设置一个RemoteObject)。当然,George上面说的很好,如果你打算做远程对象,你需要注册这个类。

http://www.brentknigge.com/?q=node/496

干杯

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

https://stackoverflow.com/questions/872005

复制
相关文章

相似问题

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