Flex集函数未被调用

Cod*_*key 5 apache-flex

好吧,我一直用这个撞到墙上.我在Flex中有以下设置功能.

    public function set periodChangeAmount(value:int):void
    {
        _PeriodChangeAmount = value;
        refreshStartEndDates();
    }   
Run Code Online (Sandbox Code Playgroud)

如果我将periodChangeAmount设置为-1或1,则会触发set方法.如果我将其设置为零,则不会被触发.这是怎么回事?有没有人知道为什么在将其设置为零时不会被调用.如果我将对象类型更改为数字甚至是对象,它仍然无法按预期工作.任何帮助将不胜感激.

Ama*_*osh 8

你有没有在设置器中设置跟踪以确保它没有被调用?

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团队这样做是为了避免绑定中的冗余.