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