Parsley 松耦合绑定实例
Web

Parsley 松耦合绑定实例

Flying
2013-09-08 / 0 评论 / 128 阅读 / 正在检测是否收录...

松耦合绑定是 Parsley 的一大特性。与 Flex 绑定不同的是,不能在声明中使用 MXML 对象,相同的是都可以创建不同的对象之间的绑定。一旦更新一个对象,另一个对象立即以解耦的方式更新。这就意味着绑定是用对象类型来识别的。发布者甚至不需要是一个被容器管理的对象,这点与事件消息相似。发布一个对象也不会引起反射(除非指定它应该管理),比依赖注入更轻量级。而且,它比依赖注入更动态化。订阅可以接受空属性,甚至是多个发布者更新的同一属性。与依赖注入和事件消息不同的是,松耦合绑定可以在组件的整个生命周期事件中进行发布。这些都是引入 Parsley 松耦合绑定的原因。

基本用法

Parsley 松耦合绑定通常就是发布订阅属性。

发布属性

只有一个发布者时使用 Publish 元数据标签。一旦更新发布者的属性,值会被推送给任何上下文中匹配该类型的订阅者。这有点类似 Flex 的单向绑定。使用方法很简单,直接在被管理的对象上使用 Publish 元数据标签,如本实例的代码片段:

[Publish]
public var sharedModel:SharedModel = new SharedModel();

不难看出,我们使用 new 来新建对象实例,避免了反射引起的性能开销。

订阅属性

直接使用 Subscribe 元数据标签进行属性订阅。当发布者更新属性值时,将同步更新所有订阅者的属性值,类似于只读属性。如本实例的代码片段:

[Subscribe]
[Bindable]
public var sharedModel:SharedModel;

订阅时 [Bindable] 元数据标签往往是不可少的,这样才能同步更新。

同时发布订阅属性

[PublishSubscribe] 元数据标签允许拥有多个发布者,这就意味着发布者也可以被其它发布者更新。如果属性的类型相同,不能同时使用 [Publish][PublishSubscribe] 元数据据标签,都应该使用 [PublishSubscribe] 元数据标签。

本实例的工程结构应该是这样的:

project-structure.gif

parsley-bindings.zip)下载该实例的源码。

注意要点

  • 必须确保配置不会导致模糊不清(错误配置造成的错误、特别是含糊不清有时候不会在初始化上下文的时候检测到),Parsley 必须在任何时候都知道哪个发布者是“负责”哪个特定订阅者。一个发布者可以有多个订阅者,在单个作用域中,对多个相同类型的实例(属性或 ID)使用 [Publish] 标签是非法的。
  • Parsly 的松耦合绑定的意义在于同时发布订阅属性,如果只有一个发布者一个订阅者,那么使用 Parsly 的事件消息就够了。
  • 最好尽量像其他的特性一样使用按类型匹配,避免使用字符串标识符。
  • 除了全局作用域,任何其他作用域必须使用 scope 属性显式指定。在 Publish 元数据标签使用托管属性,可以将容器管理的对象或任何其他容器不知道的对象,发布给订阅者。

参考文档

  • 要更多了解 Parsley 松耦合绑定,请查看 Parsley 文档相应部分
4

评论 (0)

取消