将mxml里面代码放在as文件里面,如何实现,叩谢100分

tcmis 2009-12-28 12:20:25
加精
开发环境eclipse+java+BlazeDS
我现在查询查询一个表的数据方法是:
第一步:新建一个Module,里面的内容如下

<mx:Module initialize="init()" xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="100%" height="100%">

<mx:DataGrid headerHeight="24" rowHeight="28" dataProvider="{roles}" width="100%" verticalAlign="middle" height="100%" headerStyleName="trHead">
<mx:columns>
<mx:DataGridColumn width="180" dataField="name" headerText="角色代码" />
<mx:DataGridColumn width="80" dataField="roleType" headerText="角色类别" labelFunction="disRoleType" />
</mx:columns>
</mx:DataGrid>
</mx:Module>


第二步:添加一个remoteObject

<mx:RemoteObject
id="krSysRoleService"
destination="flexKrSysRoleService"
result="getRole(event)"
showBusyCursor="true"/>


第三步:写查询代码

private function init():void{
krSysRoleService.query();
}

private function getRole(event:ResultEvent):void{
roles = ArrayCollection(event.result);
}


按上面的步骤可以吧数据查询出来,并且显示在DataGrid里面,问题是我现在想把上面查询的代码放在一个Class/as文件里面,直接写一个方法,将我的值直接返回出来,然后在我的Module里面写一个方法,把值绑定在DataGrid,用上面的方法只能是先写init()方法放在initialize里面,然后再去根据事件返回值去处理roles = ArrayCollection(event.result);,希望大侠给段代码指点一下。。谢谢。。
...全文
736 36 打赏 收藏 转发到动态 举报
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
meng0912 2010-08-22
  • 打赏
  • 举报
回复
好学若饥
哪位大哥有空去看看我提的两个问题,帮我解决下?感激不尽!
floath 2010-01-02
  • 打赏
  • 举报
回复
学习下
谢了
zodiaczhao 2010-01-02
  • 打赏
  • 举报
回复
学习
xb3212232 2009-12-31
  • 打赏
  • 举报
回复
只为求积分
q5155331 2009-12-30
  • 打赏
  • 举报
回复
顶!!!!!!!!
tcmis 2009-12-30
  • 打赏
  • 举报
回复
楼上的说的正是
sakshin7045 2009-12-30
  • 打赏
  • 举报
回复

按你的title所说似乎是想要用的时候在调用
chcchb 2009-12-30
  • 打赏
  • 举报
回复
mark
qq191498776 2009-12-29
  • 打赏
  • 举报
回复
不错
hbdongyong 2009-12-29
  • 打赏
  • 举报
回复
我的意思是想把下面的代码合成一个方法,例如现在我检测用户名的方法是checkLoginname,然后还要定义一个checkLoginnameResult这个方法去监听结果,而且我把这个方法写在一个Class文件里,还需要定义一个变量private var bresult:Boolean; 在checkLoginnameResult将监听的值赋给bresult变量,然后在mxml里面调用,在mxml里面调用,还必须定义一个方法,
XML code
public class FlexKrSysUserService{

private var bresult:Boolean;

public function checkLoginname(loginName: String):void{
var ro: RemoteObject = new RemoteObject();
ro.destination = _destination;
ro.checkLoginname(loginName);
ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult);
}

public function checkLoginnameResult(evt: ResultEvent):Boolean{
bresult = evt.result as Boolean;
return bresult;
}

public function getBresult(): Boolean{
return bresult;
}
}
能否将上面的代码合成一个方法:

XML code
public function checkLoginname(loginName: String):Boolean{
var ro: RemoteObject = new RemoteObject();
ro.destination = _destination;
var result = ro.checkLoginname(loginName); ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult);
return result;
}

hbdongyong 2009-12-29
  • 打赏
  • 举报
回复
好啊
snaillovelazy 2009-12-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kukulu00 的回复:]
新建一个 public class Service extends RemoteObject
将配置赋值,并有静态方法引用

Java codepublicclass Serviceextends RemoteObject
{publicstatic var _service:Service;publicstatic function get service():Service
{return _service;
}publicstatic function configService(destination:String,endpoint:String,source:String):void
{
_service=new Serivce(destination,endpoint,source);
}publicstatic function getOperation(name:String,responder:IResponder):Object
{
var operation:AbstractOperation= _service.getOperation(name);
operation.addEventListener(ResultEvent.RESULT,responder.result);
operation.addEventListener(FaultEvent.FAULT,responder.fault);return operation;
}public function Service(destination:String,endpoint:String,source:String)
{super(destination);this.endpoint= endpoint;this.source= source;
}

}
当然上述Service类可以直接由mxml来完成,有个静态引用即可

按你的title所说似乎是想要用的时候在调用,那么
新建一个public class DelegateBase extends EventDispatcher implements IResponder这样的业务基础
Java codepublicclass DelegateBaseextends EventDispatcherimplements IResponder
{private var _operation:AbstractOperation;public function DelegateBase()
{}public function result(data:Object):void
{
dispose();
}public function fault(info:Object):void
{
dispose();
}public function dispose():void
{
_operation.removeEventListener(ResultEvent.RESULT,result);
_operation.removeEventListener(FaultEvent.FAULT,falut);
_operation=null;
}protected function getOperation(name:String):Object
{
_operation= Service.getOperation(name,this) as AbstractOperation;return _operation;
}

}

在来一个public class KrSysRoleDelegate extends DelegateBase

Java codepublicclass KrSysRoleDelegateextends DelegateBase
{private var _roleInfo:Object;public function KrSysRoleDelegate()
{super();
}public function get roleInfo():Object
{return _roleInfo;
}

overridepublic function result(data:Object):void
{
dispatch(data.clone() as ResultEvent);
_roleInfo= data.result;super.result(data);
}public function getRole():void
{
getOperation("query").send();
}
}
到这里为止KrSysRoleDelegate的实例里roleInfo就一直储存着最后一次的交互数据,当然也可以将roleInfo相关写成静态。

代码存手打,非复制,及有可能有码错,相关类详细请查看API,也有可能错误理解了LZ的意思,请见量
[/Quote]
代码想法基本上正确,楼主可以试下
Justin-Liu 2009-12-29
  • 打赏
  • 举报
回复
jf
zy178327331 2009-12-29
  • 打赏
  • 举报
回复
学习
kukulu00 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 tcmis 的回复:]
我的意思是想把下面的代码合成一个方法,例如现在我检测用户名的方法是checkLoginname,然后还要定义一个checkLoginnameResult这个方法去监听结果,而且我把这个方法写在一个Class文件里,还需要定义一个变量private var bresult:Boolean; 在checkLoginnameResult将监听的值赋给bresult变量,然后在mxml里面调用,在mxml里面调用,还必须定义一个方法,
XML code
public class FlexKrSysUserService{

private var bresult:Boolean;

public function checkLoginname(loginName: String):void{
var ro: RemoteObject = new RemoteObject();
ro.destination = _destination;
ro.checkLoginname(loginName);
ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult);
}

public function checkLoginnameResult(evt: ResultEvent):Boolean{
bresult = evt.result as Boolean;
return bresult;
}

public function getBresult(): Boolean{
return bresult;
}
}
能否将上面的代码合成一个方法:

XML code
public function checkLoginname(loginName: String):Boolean{
var ro: RemoteObject = new RemoteObject();
ro.destination = _destination;
var result = ro.checkLoginname(loginName); ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult);
return result;
}

[/Quote]

我懂你的意思了,很遗憾,不能合为一个方法做return
做为异步调用,等待回调是必须的,必定需要做事件侦听,这是flash平台产品的特性——事件机制,习惯使用了会发现还是很方便的,可以做自定义事件,响应及处理
liangliangliyong 2009-12-28
  • 打赏
  • 举报
回复
不错哦!
yy132825 2009-12-28
  • 打赏
  • 举报
回复
谢谢楼主分享
lm616372380LM 2009-12-28
  • 打赏
  • 举报
回复
我在 研究研究
fw176170847 2009-12-28
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 kukulu00 的回复:]
引用 9 楼 fw176170847 的回复:
看這人氣比較高
問個問題:
阿有人知道上海文思創新咂樣?
還有上海謄起信息公司咂樣?



一个也不认识。。。。
[/Quote]


看來都不怎麼樣阿
要我去面試的
謄起好像是說屬于思科的
文思的月薪15k的
tcmis 2009-12-28
  • 打赏
  • 举报
回复
我的意思是想把下面的代码合成一个方法,例如现在我检测用户名的方法是checkLoginname,然后还要定义一个checkLoginnameResult这个方法去监听结果,而且我把这个方法写在一个Class文件里,还需要定义一个变量private var bresult:Boolean; 在checkLoginnameResult将监听的值赋给bresult变量,然后在mxml里面调用,在mxml里面调用,还必须定义一个方法,

public class FlexKrSysUserService{

private var bresult:Boolean;

public function checkLoginname(loginName: String):void{
var ro: RemoteObject = new RemoteObject();
ro.destination = _destination;
ro.checkLoginname(loginName);
ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult);
}

public function checkLoginnameResult(evt: ResultEvent):Boolean{
bresult = evt.result as Boolean;
return bresult;
}

public function getBresult(): Boolean{
return bresult;
}
}

能否将上面的代码合成一个方法:


public function checkLoginname(loginName: String):Boolean{
var ro: RemoteObject = new RemoteObject();
ro.destination = _destination;
var result = ro.checkLoginname(loginName); ro.addEventListener(ResultEvent.RESULT, checkLoginnameResult);
return result;
}

加载更多回复(13)

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧