"@"做什么?

Art*_*mix 6 apache-flex actionscript-3 flash-builder

有时我会在我正在工作的项目中看到以下内容:

text="@{myVar}"
Run Code Online (Sandbox Code Playgroud)

@做什么?

编辑:text是一个属性,例如TextArea组件.

Jef*_*ser 23

@符号用于双向绑定.传统绑定只是一种方式.所以,你在ActionScript中有这样的东西:

[Bindable]
public var myValue:String = 'test';
Run Code Online (Sandbox Code Playgroud)

这在MXML中

<s:TextInput id="myInput" text="{myValue}" />
Run Code Online (Sandbox Code Playgroud)

myValue是源,myInput上的text属性是目标.

当myValue变量更改时,TextInput的text属性将更改.但是,如果输入myInput; myValue的值不会改变.

这是单向绑定.更改源(myValue)会更改目标(myInput.text),但更改目标(myInput.text)不会更改源(myValue).

当你添加'@'时,它会创建一个双向绑定:

 <s:TextInput id="myInput" text="@{myValue}" />
Run Code Online (Sandbox Code Playgroud)

所以,现在每当myValue改变时,TextInput的text属性都会改变.(如上例所示).每当myInput.text更改时,myValue也会更改(与上一个示例不同).

基本上,'@'使值(myValue和myInput.text)成为绑定的源和目标.

你可以使用Binding标签在没有'@'的情况下完成同样的事情:

<fx:Binding source="myInput.text" destination="myValue " />
Run Code Online (Sandbox Code Playgroud)

这对你来说是一个更深入的解释吗?

  • 哇,我不知道这会存在! (2认同)