可有人请解释这个共同的结合陷阱给我吗? (使用错误的绑定事件名称)
-
27-09-2019 - |
题
我参考本站链接文本
使用在错误的事件名称 [绑定]标签可能会导致 应用程序不是你的属性绑定, 你甚至不知道这是为什么。什么时候 使用[绑定]标签用 自定义名称,下面的外观的例子 是个好主意:
public static const EVENT_CHANGED_CONST:String = "eventChangedConst";
private var _number:Number = 0;
[Bindable(event=EVENT_CHANGED_CONST)]
public function get number():Number
{
return _number;
}
public function set number(value:Number) : void
{
_number = value;
dispatchEvent(new Event(EVENT_CHANGED_CONST));
}
上述分配静态的代码 属性添加到事件名称,然后 使用相同的分配调度 事件。然而,当值 改变,绑定不出现 去工作。其原因是,事件 名字将是EVENT_CHANGED_CONST和 可变的不值。
代码应该已被写为 如下:
public static const EVENT_CHANGED_CONST:String = "eventChangedConst";
private var _number:Number = 0;
[Bindable(event="eventChangedConst")]
public function get number():Number
{
return _number;
}
public function set number(value:Number) : void
{
_number = value;
dispatchEvent(new Event(EVENT_CHANGED_CONST));
}
我同意,错误的例子看起来像一个好主意,我会做到这一点,那是因为我认为这是正确的方式,避免了输入错误的可能性。为何使用常量的名称,而不是它的价值呢?当然,这不可能是正确?
感谢您的见解
解决方案
由于标准的Flex编译器是不是聪明的时候......我觉得你的痛苦!我抱怨这个确切的问题多了几十倍。
如果我没有记错,这是因为编译器多遍。一个早期的传球改变了元数据AS码。在编译器中的这一点上尚未解析的AS码的其余部分,因此,其不能够解析常量或引用在其他文件中的静态变量。
我可以建议的唯一的事情就是注册到Adobe JIRA,投给了错误,并希望在4.5编译器修复带来一些缓解。
不隶属于 StackOverflow