2012-01-09 52 views
1

我在我的mxml中有這樣的標籤;BindinUtils.bindProperty方法中的函數/三元運算符

<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

試試這個:

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(); 
}