可有人请解释这个共同的结合陷阱给我吗? (使用错误的绑定事件名称)

StackOverflow https://stackoverflow.com/questions/4050013

  •  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编译器修复带来一些缓解。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top