【Flex】如何使用静态变量作为绑定的数据源

绑定有3种写法,我最喜欢在AS里用BindingUtils,因为这样的代码是最优雅的。

我在AS里用bindProperty,将一个UI上的Text控件绑定到一个变量上,变量改变时这个Text当然就会跟着变。

如果这个控件需要显示的是一些全局性的内容,显然我们希望用一个静态变量去保存这个内容,然后绑定给这个控件。

但是,当我把这个变量声明为静态的之后,不论如何改变这个静态,Text控件都不再随之变动了,代码如下:

BindingUtils.bindProperty(view.text1,"text",MyClass,"str");

public class MyClass {
public static var str:String = "111";
}

注:view是MXML的UI的一个实例化

什么原因呢?
其实static变量只能在绑定的首次生效,之后即使改变也不会分发事件了。
我们可以看到上面的例子中,text1控件,初始是显示"111"的,而当str改变时则不再联动。

那么如何才能实现这一功能呢?方法是有的,但是是变通的:

我们将一个自定义的类声明成static,然后将自定义类中的某一个非static属性绑定给控件就可以了。
public MyClass1{
public str:String="111";
}

public MyClass2{
public static myVar:MyClass1;
}

用法:
BindingUtils.bindProperty(view.text1,"text",MyClass2.myVar,"str");

这样有个要求,就是在第一次使用之前,必须先实例化一下MyClass1

MyClass2.myVar = new MyClass1();


之后只要改变MyClass2.myVar.str的值,控件就会联动了。

MyClass2.myVar.str = "222";
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值