Object 将标签绑定到对象属性
我正在做一个as项目的介绍,我有一个类,Einstein,它有一个name属性。name属性是私有的,但我有它的getter和setter。在mxml文件中,我有一个标签和一个按钮。标签显示爱因斯坦对象的名称。单击按钮时,爱因斯坦对象的名称将更改。由于标签绑定到name属性,因此它应该更新,但不会更新。下面是爱因斯坦as文件和mxml文件中可能与问题有关的部分Object 将标签绑定到对象属性,object,binding,actionscript,mxml,Object,Binding,Actionscript,Mxml,我正在做一个as项目的介绍,我有一个类,Einstein,它有一个name属性。name属性是私有的,但我有它的getter和setter。在mxml文件中,我有一个标签和一个按钮。标签显示爱因斯坦对象的名称。单击按钮时,爱因斯坦对象的名称将更改。由于标签绑定到name属性,因此它应该更新,但不会更新。下面是爱因斯坦as文件和mxml文件中可能与问题有关的部分 [Bindable] public class Einstein { private var name:String;
[Bindable]
public class Einstein
{
private var name:String;
public function Einstein(name:String)
{setName(name);}
public function getName():String
{return name;}
public function setName(sentName:String):void
{this.name = sentName;}
}
pEinstein.setName(“Freyja”);
tldr;我的标签在本应更新时未更新。自动绑定不适用于“正常”方法。它适用于getter/setter,但您需要对getter和setter使用actionscript语法。(您的get/set函数看起来与我在java中使用的语法类似-这在actionscript中确实有效,但mxml编译器不会将它们识别为get/set) 将get/set函数更改为:
public function get name():String
{return name;}
public function set name(sentName:String):void
{this.name = sentName;}
将单击处理程序中的调用更改为:
pEinstein.name = "Freyja";
并将标签更改为:
<s:Label id="nameTag" text="{pEinstein.name}" fontSize="24"/>
我通常不在flex中工作,但请尝试以下方法: (实际getter/setter AS3语法) 及
pEinstein.setName(“Freyja”);
谢谢!!!!很好用!作为使用此解决方案的任何其他人的旁注,getter/setter名称不能与变量名称相同如果此解决方案适用于您,请通过选中旁边的绿色标记将答案标记为“已接受”。这样其他人就会知道问题已经得到了回答。
<s:Label id="nameTag" text="{pEinstein.name}" fontSize="24"/>
public class Einstein
{
private var _name:String;
public function Einstein(name:String)
{setName(name);}
public function get name():String
{return _name;}
public function set name(value:String):void
{_name = value;}
}
<![CDATA[
[Bindable]
var pEinstein: Einstein = new Einstein("Brighid");
]]>
<s:Label id="nameTag" text="{pEinstein.name}" fontSize="24"/>
<s:Button content="change the name">
<s:click>
pEinstein.setName("Freyja");
</s:click>