mx.binding.utils
public class ChangeWatcher
继承ChangeWatcher Inheritance Object

ChangeWatcher 类定义能够与可绑定的 Flex 属性一起使用的实用程序方法。您可以使用这些方法定义一个事件处理函数,在每次更新可绑定的属性时都执行此函数。

另请参见

Defining data bindings in ActionScript


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
公共方法
 方法定义方
  
ChangeWatcher(access:Object, handler:Function, commitOnly:Boolean = false, next:ChangeWatcher = null)
构造函数。
ChangeWatcher
  
canWatch(host:Object, name:String, commitOnly:Boolean = false):Boolean
[静态] 允许您确定宿主是否在此属性上公开数据绑定事件。
ChangeWatcher
  
getEvents(host:Object, name:String, commitOnly:Boolean = false):Object
[静态] 返回宿主对象中的所有可绑定属性的所有绑定事件。
ChangeWatcher
  
检索观察的属性或属性链的当前值,当宿主对象为空时此值为空。
ChangeWatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
  
如果链中的每个观察器都连接了至少一个 change 事件,则返回 true。
ChangeWatcher
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
  
reset(newHost:Object):void
重置此 ChangeWatcher 实例可使用新的宿主对象。
ChangeWatcher
  
设置处理函数。
ChangeWatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
  
从当前宿主中断开此 ChangeWatcher 实例及其处理函数。
ChangeWatcher
 Inherited
返回指定对象的原始值。
Object
  
watch(host:Object, chain:Object, handler:Function, commitOnly:Boolean = false):ChangeWatcher
[静态] 创建并启动 ChangeWatcher 实例。
ChangeWatcher
构造函数详细信息
ChangeWatcher()构造函数
public function ChangeWatcher(access:Object, handler:Function, commitOnly:Boolean = false, next:ChangeWatcher = null)

构造函数。非公用。只能从 watch() 方法中调用此方法。有关参数用法,请参阅 watch() 方法。

参数
access:Object
 
handler:Function
 
commitOnly:Boolean (default = false)
 
next:ChangeWatcher (default = null)
方法详细信息
canWatch()方法
public static function canWatch(host:Object, name:String, commitOnly:Boolean = false):Boolean

允许您确定宿主是否在此属性上公开数据绑定事件。

参数

host:Object — 属性的宿主。有关详细信息,请参阅 watch() 方法。
 
name:String — 属性或属性链的名称。有关详细信息,请参阅 watch() 方法。
 
commitOnly:Boolean (default = false) — 如果应仅在提交 change 事件时调用处理函数,则设置为 true。有关详细信息,请参阅 watch() 方法。

返回
Boolean — 如果 hostname 上公开了任何 change 事件,则为 true
getEvents()方法 
public static function getEvents(host:Object, name:String, commitOnly:Boolean = false):Object

返回宿主对象中的所有可绑定属性的所有绑定事件。

参数

host:Object — 属性的宿主。有关详细信息,请参阅 watch() 方法。
 
name:String — 属性或属性链的名称。有关详细信息,请参阅 watch() 方法。
 
commitOnly:Boolean (default = false) — 控制是否在返回值中包含不提交的 change 事件。

返回
Object{ eventName: isCommitting, ... } 形式的对象,包含该属性的所有 change 事件。
getValue()方法 
public function getValue():Object

检索观察的属性或属性链的当前值,当宿主对象为空时此值为空。例如:

watch(obj, ["a","b","c"], ...).getValue() === obj.a.b.c

返回
Object — 观察的属性或属性链的当前值。
isWatching()方法 
public function isWatching():Boolean

如果链中的每个观察器都连接了至少一个 change 事件,则返回 true。请注意,isWatching() 方法随宿主而异,因为不同的宿主可能会根据观察器选择的属性公开不同的 change 事件。

返回
Boolean — 如果链中的每个观察器都连接了至少一个 change 事件,则返回 true
reset()方法 
public function reset(newHost:Object):void

重置此 ChangeWatcher 实例可使用新的宿主对象。您可以调用此方法在其它宿主上重复使用观察器实例。

参数

newHost:Object — 新的宿主属性。有关详细信息,请参阅 watch() 方法。

setHandler()方法 
public function setHandler(handler:Function):void

设置处理函数。

参数

handler:Function — 处理函数。此参数不得为空。

unwatch()方法 
public function unwatch():void

从当前宿主中断开此 ChangeWatcher 实例及其处理函数。您可以使用 reset() 方法重新连接 ChangeWatcher 实例,或在不同宿主对象上观察同一个属性或属性链。

watch()方法 
public static function watch(host:Object, chain:Object, handler:Function, commitOnly:Boolean = false):ChangeWatcher

创建并启动 ChangeWatcher 实例。一个 ChangeWatcher 实例可观察一个属性或一个属性链。属性链是可从宿主对象访问的一系列属性。例如,表达式 obj.a.b.c 中包含属性链 (a, b, c)。

参数

host:Object — 用于承载要监视的属性或属性链的对象。创建 ChangeWatcher 实例后,您可以使用 reset() 方法更改 host 参数的值。
 
chain:Object — 用于指定要监视的属性或属性链的值。合法值包括:
  • 包含宿主对象公用可绑定属性名称的 String。
  • 以下格式的 Object:{ name: 属性名, getter: function(host) { return host[name] } }。此 Object 包含一个公用可绑定属性的名称以及一个充当该属性的 getter 的函数。
  • 包含前两种选项的任意组合的非空 Array。这代表可从宿主访问的可绑定属性链。例如,要观察属性 host.a.b.c,需按以下形式调用此方法:watch(host, ["a","b","c"], ...)

请注意:在 chain 参数中命名的属性必须是公用属性,因为 describeType() 方法抑制非公用属性的所有相关信息,包括 ChangeWatcher 在查找为给定属性公开的 change 事件时扫描的可绑定元数据。但是,在使用上述 { name, getter } 参数形式时提供的 getter 函数可用于将任意计算值与指定的(公用)属性关联。

 
handler:Function — 在修改观察属性(或观察链中任何属性)的值时调用的事件处理函数。如果观察器链中的任何宿主对象调度了在该宿主对象的 [Bindable] 元数据标记中为相应的观察属性指定的事件,则表明已经修改。默认事件名为 propertyChange

由可绑定属性调度的事件对象将传递到此处理函数,不会进行任何修改。默认情况下,Flex 将调度 PropertyChangeEvent 类型的事件对象。然而,在使用 [Bindable] 元数据标记定义可绑定属性时,您可以定义自己的事件类型。

 
commitOnly:Boolean (default = false) — 如果仅在提交 change 事件时需要调用处理函数,则设置为 true;如果无论是否提交 change 事件都调用处理函数,则设置为 false。请注意:属性是否存在不提交的 change 事件由 [NonCommittingChangeEvent(<event-name>)] 元数据标记来指示。通常,这些标记用于指示细化值更改,例如确认前在文本字段中进行的修改。

返回
ChangeWatcher — 如果已为 chain 参数至少指定了一个属性名称,则返回 ChangeWatcher 实例;否则返回 null。请注意,不能保证返回的监视程序已成功发现 change 事件并将自身附加到 change 事件,因为宿主可能没有在给定的属性或属性链上公开任何事件。您可以使用 isWatching() 方法来确定观察器的状态。

另请参见