云自无心水自闲

天平山上白云泉,云自无心水自闲。何必奔冲山下去,更添波浪向人间!
posts - 288, comments - 524, trackbacks - 0, articles - 6
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

 

在Flex的开发过程中,尤其是在使用Cairngorm的时候,总会遇到需要在Model的属性值改变后,需要调用一个指定的函数。传统的解决方法是使用一个Setter方法,在这个方法中首先对属性赋值,然后调用指定的函数,比如:

---------------------------
[ChangeEvent("deleteEnabledChange")]
public function get deleteEnabled() : Boolean {
return _deleteButtonVisible;
}

public function set deleteEnabled(value : Boolean) : Void {
_deleteButtonVisible = value;
SimpleButton(deleteButton)._visible = false;
dispatchEvent(new Event("deleteEnabledChange", this));
}
--------------

但是现在我们有一个更简洁的解决之道
首先添加这样一个类
package com.adobe.ac.util
{
   public class Observe
   {
      public var handler : Function;
 
      public function set source( source : * ) : void
      {
         handler.call();
      }
   }
}
然后就可以使用这个作为标签了。
<util:Observe source="{ model.myProperty }"
              handler="{ this.myFunction }"/>
使用了这样的一个标签后,今后嘦是对model.myProperty进行赋值,就会调用myFunction
这个号称世上最小的标签是不是很好用啊?




评论

# re: Cairngorm中Model数据变化后如何自动调用一个自定义函数?[未登录]  回复  更多评论   

2007-04-13 10:06 by 永恒
呵呵,相当巧妙的方法啊

# re: Cairngorm中Model数据变化后如何自动调用一个自定义函数?  回复  更多评论   

2008-05-16 02:32 by iptton
这样就有点不厚道了吧。。代码抄别人的也不注明...

# re: Cairngorm中Model数据变化后如何自动调用一个自定义函数?  回复  更多评论   

2009-01-12 11:18 by QQ124294272
巧个鬼啊,还不如直接在MODEL中用回调,

# re: Cairngorm中Model数据变化后如何自动调用一个自定义函数?  回复  更多评论   

2013-07-11 20:58 by lobtao
直接用回调函数

只有注册用户登录后才能发表评论。


网站导航: