`
windmark
  • 浏览: 32176 次
社区版块
存档分类
最新评论

Parsley sample

 
阅读更多

1.本例目的
parsley使用入门
IOC功能基本演示
托管事件及处理演示

2.本例代码结构
src
--Beans.mxml //配置文件
--test.mxml //主程序
com.test.event
--LoginEvent.as //登录事件类
com.test.service
--ILoginService.as //登录处理接口
--LoginServiceImpl.as //登录处理实现类

3.代码详细说明
BeansConfig.mxml
<?xml version="1.0" encoding="utf-8"?>
<fx:Object 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:spicefactory="http://www.spicefactory.org/parsley">
<fx:Script>
<![CDATA[
import com.test.service.*;
]]>
</fx:Script>
<fx:Declarations>
<spicefactory:Object type="{LoginServiceImpl}" id="loginService" lazy="true" />
</fx:Declarations>
</fx:Object>

说明:
实例化LoginServiceImpl,该对象的ID为loginService

test.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:Application 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"
minWidth="955" minHeight="600">
<s:layout>
<s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>

</s:layout>
<fx:Declarations>
<parsley:Configure/>
<parsley:ContextBuilder config="BeansConfig"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.test.event.LoginEvent;
import com.test.service.ILoginService;
import mx.controls.Alert;

//根据ID,将ILoginService的实现类通过parsley自动注入到这里
[Inject(id="loginService")]
public var service:ILoginService;

private function onLoginClick():void{
this.service.login('d_yang','******');
}

//当parsley框架监听到有一个类派发LoginEvent事件,并且类型为loginSuccess时,
//由onLoginSuc函数进行处理。
[MessageHandler(selector="loginSuccess")]
public function onLoginSuc(evt:LoginEvent):void{
//登录后干点啥。。。
btnlogin.label="登录成功";
Alert.show("登录成功");
}
]]>
</fx:Script>

<s:Button id="btnlogin" label="未登录" click="onLoginClick()"/>
</s:Application>
说明:
1.上下文环境设置

<fx:Declarations>
<parsley:Configure/> //将当前窗体注册到parsley
<parsley:ContextBuilder config="BeansConfig"/> //加载配置文件,初始化
</fx:Declarations>

注意: parsley2.0的代码应该如下,在主程序的 preinitialize事件和addToStage事件中执行以下语句,初始化所有对象
preinitialize="FlexContextBuilder.build(BeansConfig)"
addedToStage="dispatchEvent(new Event('configureIOC', true));"

2.由于这里使用了parsley,通过IOC,将对象自动注入到接口ILoginService
[Inject(id="loginService")]
public var service:ILoginService;
如果ILoginService只存在一个实现类,则可省略ID号,parsley会自动找到该接口的实现类
[Inject]
public var service:ILoginService;
3.如果将[MessageHandler(selector="loginSuccess")]改成[MessageHandler],则无论是loginSuccess或loginFail(只要是LoginEvent事件),onLoginSuc函数都进行处理。


com.test.event.LoginEvent.as
package com.test.event
{
import flash.events.Event;

public class LoginEvent extends Event
{
public function LoginEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}

public static const LOGINSUCCESS:String = "loginSuccess";
public static const LOGINFAIL:String = "loginFail";

}
}

说明:
1.自定义一个登录事件
2.事件中有两个常量:LOGINSUCCESS和LOGINFAIL

package com.test.service.ILoginService
package com.test.service
{
public interface ILoginService
{
function login(user:String, passwd:String):void;
}
}
说明:
1.声明一个登录处理接口

package com.test.service.LoginServiceImpl
package com.test.service
{
import flash.events.EventDispatcher;
import flash.events.IEventDispatcher;
import com.test.event.LoginEvent;

//声明loginSuccess,loginFail类型的LoginEvent事件为托管事件
[Event(name="loginSuccess",type="com.test.event.LoginEvent")]
[Event(name="loginFailed",type="com.test.event.LoginEvent")]
[ManagedEvents("loginSuccess,loginFail")]
public class LoginServiceImpl extends EventDispatcher implements ILoginService
{
public function LoginServiceImpl(target:IEventDispatcher=null)
{
super(target);
}
public function login(user:String, passwd:String):void
{
var evt:LoginEvent = new LoginEvent(LoginEvent.LOGINSUCCESS);
this.dispatchEvent(evt);//派发LoginEvent事件
}
}
}
说明:
1.由于LoginServiceImpl类会派发托管事件,则该类必须继承flash.events.EventDispatcher类
2.如果是将LoginEvent事件的所有类型都声明为托管事件,则可省略
[Event(name="loginSuccess",type="com.test.event.LoginEvent")]
[Event(name="loginFailed",type="com.test.event.LoginEvent")]

4.开发环境

flash builder4 正式版; parsley2.2.2 ; flex4_sdk_0.0.14159

5.总结

有些朋友遇到注入失败的问题,主要原因是parsley的版本与程序的兼容问题,比如parsley2.0编写的代码就与parsley2.2.2不能互用。

分享到:
评论

相关推荐

    parsley-flash api

    Parsley Flash API 是一个专为Adobe Flash平台设计的组件,用于增强Flash应用程序的功能和交互性。这个API允许开发者在Flash环境中与Parsley框架进行交互,提供更高级别的事件处理、依赖注入以及面向切面编程(AOP)...

    parsley-2.3.1资源

    《Parsley 2.3.1:一个全面解析的资源宝库》 Parsley,这个名称在编程世界中可能并不广为人知,但它在特定的开发领域却扮演着重要角色。Parsley 2.3.1 是一个开源框架,主要用来处理复杂的软件架构和应用程序设计。...

    Parsley.js-

    **Parsley.js** 是一个强大的前端验证框架,专门用于JavaScript,它的主要目的是在用户提交表单之前确保输入数据的有效性和正确性。这个框架通过添加轻量级的DOM数据属性和事件来实现验证,无需编写复杂的JavaScript...

    parsley例子parsley例子

    **Parsley框架详解** Parsley是SpringSource公司开发的一个强大的ActionScript 3和Flex应用程序的依赖注入(DI)框架。它为Flex和Flash开发者提供了面向对象编程和设计模式的支持,使得大型项目的管理和维护变得...

    parsley官方资料详解

    Parsley 是一个专门为 Flex 和 Flash 开发的 Inversion of Control (IOC) 容器和消息框架,旨在创建高度解耦的架构。它的核心功能包括依赖注入、对象生命周期管理和消息传递,且具备良好的扩展性。Parsley 不仅能在 ...

    parsley2.4英文开发手册

    ### Parsley 2.4 英文开发手册关键知识点解析 #### 一、概述 **Parsley** 是一个为 **Flex 和 Flash 应用程序** 设计的应用框架,其核心构建在一个 **IoC 容器** 和 **消息传递框架** 基础之上,这些特性使得开发...

    ParsleyTest Flex框架parsley的使用入门

    **ParsleyTest Flex框架Parsley的使用入门** Parsley是ActionScript 3.0的一个强大依赖注入(DI)和控制反转(IoC)框架,它为Flex和Adobe AIR应用程序提供了灵活的架构支持。这个名为"ParsleyTest"的压缩包文件...

    parsley中文版 绝对真实

    【Parsley中文版:一个全面的介绍】 "Parsley中文版"是一个为中文用户提供服务的软件或工具,它的出现旨在解决英文版本使用时的语言障碍,使得更多中国用户能够便捷地利用Parsley进行相关操作。这个免费共享的资源...

    Flex Cairngorm Parsley Demo 源码

    Flex Cairngorm和Parsley是两种在Adobe Flex框架中广泛使用的MVC(Model-View-Controller)设计模式实现库,它们主要用于构建大型、复杂的富互联网应用程序(RIA)。本源码Demo提供了这两种技术的集成应用实例,帮助...

    Parsley.js示例

    Parsley 2.0 is available in early dev mode for testing purpose. You can see it there at the moment: Parsley2 doc Please have a try, and your feeback here would be much appreciated! Thanks

    parsley loc框架 flash flex 通用

    标题中的“Parsley LOC框架”指的是Parsley框架,这是一个专门为Adobe Flex和ActionScript开发者设计的开源依赖注入(Dependency Injection)和应用架构框架。它增强了Flex和Flash应用程序的可维护性和可扩展性,...

    parsley2 中文指南

    若你不知道parsley,但您一定听过Cairngorm、Mate、PureMVC、Swiz或SpringAcitonScript,只要听说过其中之一就好了,因为parsley也是他们行列中的一员,是Adobe项目组今年7月份推荐的一个灵活的flex框架!

    Python-Parsley处理HTML为JSON

    1. **安装Parsley**: 在你的Python环境中,可以通过pip来安装Parsley,命令如下: ``` pip install parsley ``` 2. **导入Parsley**: 安装完成后,你需要在Python代码中导入Parsley库。 ```python from ...

    parsley.js验证

    **Parsley.js验证**是一种前端验证库,用于在用户提交表单之前验证输入数据的正确性。这个库提供了一种简洁且灵活的方式来确保用户在交互时提供的信息满足预设的验证规则,从而提高用户体验并减少服务器端的无效请求...

    Parsley Framework 和 Tips for Flex 的 PPT

    《Parsley Framework 和 Flex 开发实用技巧》 在IT行业中,框架的选择和熟练使用对于提升开发效率至关重要。本资料包包含两个主题:Parsley Framework的深入理解和Flex开发的实用提示,旨在帮助开发者更好地掌握这...

    表单验证插件Parsley.js.zip

    Parsleyjs 是一个用来对 Web 表单的输入数据进行验证的 JavaScript 库,无需另写一行 JavaScript 代码。中文版本:https://git.oschina.net/dahouge/Parsley.js 主要特性 基于超棒的用户体验超级方便... 标签:Parsley

    parsley2.3中文文档

    Parsley 2.3 是一个强大的ActionScript 3.0框架,被Adobe咨询团队推荐用于Flex开发。这个框架的设计目标是提供一个高效、可扩展的解决方案,帮助开发者构建复杂的应用程序。通过阅读和理解Parsley 2.3的中文文档,...

    parsley-flex api

    Parsley-Flex API 是一个专门用于处理灵活性和可扩展性的软件开发工具包,主要针对英语用户群体。在本文中,我们将深入探讨Parsley-Flex API 的核心概念、功能和应用场景,帮助开发者更好地理解和利用这个强大的API...

Global site tag (gtag.js) - Google Analytics