跳到主要内容

eui.Watcher

   eui

   public class Watcher

Watcher 类能够监视可绑定属性的改变,您可以定义一个事件处理函数作为 Watcher 的回调方法,在每次可绑定属性的值改变时都执行此函数。

公共方法

方法
Watcher(property:string,handler:(value:any)=>void,thisObject:any,next:eui.Watcher)
构造函数,非公开
getValue():any
检索观察的属性或属性链的当前值,当宿主对象为空时此值为空
reset(newHost:egret.IEventDispatcher):void
重置此 Watcher 实例使用新的宿主对象
setHandler(handler:(value:any)=>void,thisObject:any):void
设置处理函数
unwatch():void
从当前宿主中断开此 Watcher 实例及其处理函数
watch(host:any,chain:string[],handler:(value:any)=>void,thisObject:any):eui.Watcher
[静态]创建并启动 Watcher 实例

方法详细信息

Watcher()

public Watcher(property:string,handler:(value:any)=>void,thisObject:any,next:eui.Watcher)

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

getValue()

public getValue():any

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

  • 支持版本:eui 1.0
  • 运行平台:Web,Native
//Example:

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

reset()

public reset(newHost:egret.IEventDispatcher):void

重置此 Watcher 实例使用新的宿主对象。您可以通过该方法实现一个Watcher实例用于不同的宿主。

setHandler()

public setHandler(handler:(value:any)=>void,thisObject:any):void

设置处理函数。

  • 支持版本:eui 1.0
  • 运行平台:Web,Native
  • 参数
    • handler:(value:any)=>void - 处理函数,此参数必须为非空。
    • thisObject:any

unwatch()

public unwatch():void

从当前宿主中断开此 Watcher 实例及其处理函数。

  • 支持版本:eui 1.0
  • 运行平台:Web,Native

watch()

public watch(host:any,chain:string[],handler:(value:any)=>void,thisObject:any):eui.Watcher

创建并启动 Watcher 实例。注意:Watcher 只能监视 host 为 egret.IEventDispatcher 对象的属性改变。若属性链中某个属性所对应的实例不是 egret.IEventDispatcher,则属性链中在它之后的属性改变将无法检测到。

  • 支持版本:eui 1.0

  • 运行平台:Web,Native

  • 参数

    • host:any - 用于承载要监视的属性或属性链的对象。创建Watcher实例后,您可以利用reset()方法更改host参数的值。当prop改变的时候,会使得host对应的一系列handlers被触发。
    • chain:string[] - 用于指定要监视的属性链的值。例如,要监视属性 host.a.b.c,需按以下形式调用此方法:watch¬(host, ["a","b","c"], ...)。
    • handler:(value:any)=>void - 在监视的目标属性链中任何属性的值发生改变时调用的事件处理函数。
    • thisObject:any - handler 方法绑定的this对象
  • 返回:如果已为 chain 参数至少指定了一个属性名称,则返回 Watcher 实例;否则返回 null。

示例

**

* 以下示例使用 WatcherExample 类来说明如何监视绑定属性的改变

*/

class WatcherExample extends egret.Sprite {

public porp: number = 789;

constructor() {

super();

eui.Watcher.watch(this, ["porp"], this.watcherHander, this);

this.porp = 666;

this.porp = 123;

}

public watcherHander(value: any): void {

egret.log("watcherHander:" + " " + value + " " + this.porp);

}

}