BindinUtils.bindProperty方法中的函数/三元运算符

时间:2012-01-09 15:02:40

标签: data-binding binding flex4 ternary-operator

我的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似乎只接受字符串。那么以什么方式绕过这个“功能”呢?

1 个答案:

答案 0 :(得分: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();
}