Функция / троичный оператор в методе BindinUtils.bindProperty - PullRequest
1 голос
/ 09 января 2012

У меня есть метка в моем 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 вместо change;

.bindProperty(lblChange, "text", _symbol, checkValue(_symbol.change));

Однако bindProperty, похоже, не принимает здесь ничего, кроме строк. Так как же обойти эту «особенность»?

1 Ответ

1 голос
/ 25 июня 2012

Попробуйте это:

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