【问题标题】:Disable databinding in MXML在 MXML 中禁用数据绑定
【发布时间】:2010-08-14 22:45:00
【问题描述】:
当 Flex SDK 将 MXML 转换为 actionscript 时,它会生成大量数据绑定代码。但是,有时我不想绑定变量,例如,如果我知道变量不会改变。
我似乎无法在 Flex 中找到解决方法来禁用自动生成的数据绑定。
另外,我希望这也有助于解决数据绑定引发的一些运行时警告。
为了绕过它们,我有时会使用以下内容,它只会引发语法警告(并且不会在运行时出现在我的控制台中)。
语法警告:
使用方括号运算符时,数据绑定将无法检测到更改。对于 Array,请改用 ArrayCollection.getItemAt()。
【问题讨论】:
标签:
apache-flex
data-binding
code-generation
flex4
mxml
【解决方案1】:
以下标签将告诉 Flex SDK 变量并没有真正改变并删除“无法绑定...”警告:
[Bindable("__NoChangeEvent__")]
private var model:MyModel = MyModel.instance;
接下来,将类似array[i] 的表达式移到单独的函数中以删除警告。如果你有这个:
<mx:Button label="{array[i]}"/>
然后创建一个函数:
private function buttonLabel(i):String
{
return array[i];
}
还有 MXML:
<mx:Button label="{buttonLabel(i)}"/>
P.S:如果按钮标签在运行时发生变化,那么您可以在函数中添加 [Bindable(...)] 元标记:
[Bindable("stringsChange")]
private function buttonLabel(i):String
{
return array[i];
}
dispatchEvent(new Event("stringsChange"));