【问题标题】:Function / ternary operator in BindinUtils.bindProperty methodBindinUtils.bindProperty 方法中的函数/三元运算符
【发布时间】:2023-03-31 14:55:01
【问题描述】:

我的 mxml 中有一个这样的标签;

   <s:Label id="lblChange" text="{_symbol.change>0 ?  '+' + _symbol.change:_symbol.change}" />

这工作得很好,但我需要用 BindingUitls 替换通过大括号的绑定,像这样;

_changeWatcher = BindingUtils.bindProperty(lblChange, "text", _symbol, "change");

同样,工作正常,但没有 if/else 情况。所以我虽然可以写一个函数来做到这一点;

private function checkValue(val:Number):String {
    if (val > 0)
        return "+"+val;
    else
        return val as String;
}

并将其用作 bindProperty 调用中的属性而不是更改;

.bindProperty(lblChange, "text", _symbol, checkValue(_symbol.change));

但是,bindProperty 似乎只接受字符串。那么有什么方法可以绕过这个“功能”呢?

【问题讨论】:

    标签: data-binding binding flex4 ternary-operator


    【解决方案1】:

    试试这个:

    BindingUtils.bindSetter(checkValue, _symbol, "change");
    
    private function checkValue(object:Object):void {
        var val:Number = object as Number;
        if (val > 0)
            lblChange.text = "+"+val.toString();
        else
            lblChange.text = val.toString();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-11-24
      • 1970-01-01
      • 2021-01-25
      • 2021-10-11
      • 2013-04-29
      相关资源
      最近更新 更多