0

我正在做一个项目的介绍,我有一个班级,爱因斯坦,它有一个名字的属性。name 属性是私有的,但我有它的 getter 和 setter。在 mxml 文件中,我有一个标签和一个按钮。标签显示 Einstein 对象的名称。单击该按钮时,Einstein 对象的名称将更改。由于标签绑定到名称属性,它应该更新但它不是。下面是 Einstein 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;}
}

        <![CDATA[
        [Bindable]
        var pEinstein: Einstein = new Einstein("Brighid");
    ]]>

        <s:Label id="nameTag" text="{pEinstein.getName()}" fontSize="24"/>
        <s:Button content="change the name">
            <s:click>
                pEinstein.setName("Freyja");
            </s:click>

tldr; 我的标签在它应该更新的时候没有更新

4

2 回答 2

0

我通常不在 flex 中工作,但试试这个:(实际的 getter/setter AS3 语法)

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>
于 2013-04-20T10:06:06.627 回答
-1

自动绑定不适用于“正常”方法。它适用于 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"/>
于 2013-04-16T20:06:30.647 回答