Object 将标签绑定到对象属性

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;

我正在做一个as项目的介绍,我有一个类,Einstein,它有一个name属性。name属性是私有的,但我有它的getter和setter。在mxml文件中,我有一个标签和一个按钮。标签显示爱因斯坦对象的名称。单击按钮时,爱因斯坦对象的名称将更改。由于标签绑定到name属性,因此它应该更新,但不会更新。下面是爱因斯坦as文件和mxml文件中可能与问题有关的部分

    [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>