加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex类绑定

发布时间:2020-12-15 04:35:44 所属栏目:百科 来源:网络整理
导读:在flex项目开发过程中,如果一个类太大,可以分解为几个类。因为flex类之间的通信不方便,如果是mxml类型文件可以用parsley框架,但是as之间或者mxml和as时间通信是非常不方便的,如果业务逻辑处理都放在一个mxml里边或者主应用程序里边会导致庞大的类不但编

在flex项目开发过程中,如果一个类太大,可以分解为几个类。因为flex类之间的通信不方便,如果是mxml类型文件可以用parsley框架,但是as之间或者mxml和as时间通信是非常不方便的,如果业务逻辑处理都放在一个mxml里边或者主应用程序里边会导致庞大的类不但编译缓慢,运行的效率也会降低。当前所作的项目就是这样,我们采取了分解的办法,将一些业务逻辑和试图展示尽量分开。新建as文件,这样可以加速编译(mxml最终都会编译为as类型运行),具体实现框架如下:

1,需要分解的胖类FatA.mxml'

<?xml version="1.0" encoding="utf-8"?>

<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
???????? xmlns:s="library://ns.adobe.com/flex/spark"
???????? xmlns:mx="library://ns.adobe.com/flex/mx"
???????? xmlns:parsley="http://www.spicefactory.org/parsley">

?<fx:Script>
??????? <![CDATA[

????????? //ModelA为新类,在这个类可以获取到当前这个类的所有数据

?????????? [Bindable]
??????????? public var modelA:ModelA;
???????????
??????????? [Bindable]
??????????? public var modelA:ModelB;

????????? protected function injectionModelA(event:Event):void
??????????? {
??????????????? modelA.bindView(this);
??????????? }
??????????? protected function injectionModelB(event:Event):void
??????????? {
??????????????? modelB.bindView(this);
??????????? }

????????????//需要分解到ModelA时,使用modelA.方法名即可

?]]>
??? </fx:Script>

?<fx:Declarations>

<!-- 引入配置文件-->

<parsley:ContextBuilder config="com.huawei.wfm.scheduling.monitor.context.ApplicationContext"/>
??? <parsley:Configure/>

?<parsley:FastInject injectionComplete="injectionModelA(event)" objectId="branchA"??? property="modelA"/>
?<parsley:FastInject injectionComplete="injectionModelB(event)" objectId="branchB"?? property="modelB"/>
?<parsley:Configure/>

?? </fx:Declarations>

2,??事件派发(绑定原理是parsley)

? [Bindable]
??? public class BreakModel extends EventDispatcher
??? {
??????? protected var view:UIComponent;
???????
??????? public function BreakModel(){}
???????
??????? /**表现层模型持有视图的引用*/
??????? public function bindView(view:UIComponent):void
??????? {
??????????? this.view = view;
??????? }
??? }

3,parsley配置框架

<?xml version="1.0" encoding="utf-8"?>
<Object xmlns="*"
??????? xmlns:fx="http://ns.adobe.com/mxml/2009"
??????? xmlns:mx="library://ns.adobe.com/flex/mx"?
??????? xmlns:breakModel="com.test.breakTest.*">
??? <fx:Declarations>
??
??????? <breakModel:ModelA id="branchA"/>
??????? <breakModel:ModelB id="branchB"/>
???? </fx:Declarations>
</Object>

?

?

4,分支类A(B类似)

package com.test.breakTest

{

?[Bindable]
??public class ModelA??? extends AbstractModel
??{

?? ? public var? fatAcopy:FatA= new FatA();

??? ? //可以写逻辑代码,如果涉及到FatA.mxml视图改变时,

???????// 使用fatAcopy= FatA(view),视图会自动更新,

??????//? 引用胖类的变量使用fatAcopy.*

? }

}

这样就可以减轻胖类的负担,其实质还是parsley框架,所以必须先引入parsley库文件

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读