2012-01-09 18 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(); 
}