在MXML中禁用数据绑定

时间:2010-08-14 22:45:01

标签: flex data-binding code-generation flex4 mxml

当Flex SDK将MXML转换为actionscript时,它会生成大量数据绑定代码。但是,有时我不想绑定变量,例如,如果我知道变量不会改变。

我似乎无法在Flex中找到解决方法来禁用自动生成的数据绑定。

另外,我希望这也可能有助于数据绑定引发的一些运行时警告。 为了解决它们,我有时会使用以下内容,它只会抛出语法警告(并且在运行时不会出现在我的控制台中)。 语法警告: 使用方括号运算符时,数据绑定将无法检测到更改。对于Array,请改用ArrayCollection.getItemAt()。

1 个答案:

答案 0 :(得分:3)

以下标记将告诉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"));