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

Data binding BindinUtils.bindProperty方法中的函数/三元运算符,data-binding,binding,flex4,ternary-operator,Data Binding,Binding,Flex4,Ternary Operator,我的mxml中有这样一个标签 <s:Label id="lblChange" text="{_symbol.change>0 ? '+' + _symbol.change:_symbol.change}" /> 同样,可以正常工作,但没有if/else情况。所以我想我可以写一个函数来实现这一点 private function checkValue(val:Number):String { if (val > 0) return "+"+

我的mxml中有这样一个标签

   <s:Label id="lblChange" text="{_symbol.change>0 ?  '+' + _symbol.change:_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似乎只接受字符串。那么,有什么方法可以绕过这个“功能”?

试试这个:

试试这个:

.bindProperty(lblChange, "text", _symbol, checkValue(_symbol.change));
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();
}