gpt4 book ai didi

apache-flex - Flex set 函数没有被调用

转载 作者:行者123 更新时间:2023-12-04 17:42:05 26 4
gpt4 key购买 nike

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

    public function set periodChangeAmount(value:int):void
{
_PeriodChangeAmount = value;
refreshStartEndDates();
}

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

最佳答案

您是否在 setter 中放置了跟踪以确保它没有被调用?

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;

跟踪输出:

get called : false
set called with true current is false
get called : true



请注意,getter 被调用了两次,而 setter 只被调用了一次。在第二次赋值中,由于当前值和要设置的值相同(true),所以不调用 setter。

我相信 flex 开发团队这样做是为了避免绑定(bind)中的冗余。

关于apache-flex - Flex set 函数没有被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538929/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com