好吧,我一直用这个撞到墙上.我在Flex中有以下设置功能.
public function set periodChangeAmount(value:int):void
{
_PeriodChangeAmount = value;
refreshStartEndDates();
}
Run Code Online (Sandbox Code Playgroud)
如果我将periodChangeAmount设置为-1或1,则会触发set方法.如果我将其设置为零,则不会被触发.这是怎么回事?有没有人知道为什么在将其设置为零时不会被调用.如果我将对象类型更改为数字甚至是对象,它仍然无法按预期工作.任何帮助将不胜感激.
你有没有在设置器中设置跟踪以确保它没有被调用?
是periodChangeAmount一个Bindable读写属性?在这种情况下,flex内部调用getter以确保要设置的值不是现有值.如果属性的当前值(由getter返回)与要设置的值相同,则不调用setter.
private var privateVar:Boolean = false;
[Bindable]
public function set readWriteProp(value:Boolean):void
{
trace("set called with " + value + " current is " + privateVar);
privateVar = value;
}
public function get readWriteProp():Boolean
{
trace("get called : " + privateVar);
return privateVar;
}
//...
a.readWriteProp = true;
a.readWriteProp = true;
Run Code Online (Sandbox Code Playgroud)
追踪输出:
get call:false
set with true current is false
get called:true
请注意,getter被调用了两次,但setter只调用了一次.在第二个赋值中,由于要设置的当前值和值相同(true),因此不会调用setter.
我相信flex dev团队这样做是为了避免绑定中的冗余.
| 归档时间: |
|
| 查看次数: |
2502 次 |
| 最近记录: |