2010-01-04 2 views
0

Я пытаюсь привязать свойство объекта к свойству text ComboBox (editable = true). Это свойство имеет тип Number.Flex Data Binding

Если я связываю с использованием синтаксиса рядный, он работает:

<mx:ComboBox text="{myObj.prop}"> 

Если я связываю с помощью тх: Binding, я получаю сообщение об ошибке:

<mx:Binding source="{myObj.prop}" destination="combobox.text" /> 

// 1067: Implicit coercion of a value of type Number to an unrelated type String. 

Почему эта разница в поведении?

определение недвижимости:

private var _prop: Number; 

[Bindable] public function get prop(): Number { return _prop; } 
public function set prop(value: Number): void { _prop = value; } 

ответ

1

Сначала я подумал: mx:Binding источник должен быть само имя поля, а не значение. Flex жалуется, потому что он разыскивает myObj.prop из-за {} и видит там значение (Number), когда он хочет строку с именем поля.

<mx:Binding source="myObj.prop" destination="combobox.text" /> 

Однако:

ActionScript внутри фигурных скобок допускается в выражении mx:Binding источника, и требуется в данном случае. См. Adobe data binding examples.

Свойство text ожидает String быть возложены на него, так что вы хотите, чтобы бросить в вашем связывании:

<mx:Binding source="{String(myObj.prop)}" destination="combobox.text" /> 

Моих извинения за начальный недостоверный ответ, надеюсь, это на правильном пути.

+0

По-прежнему получаю ту же ошибку после снятия скобок. –

+0

Было бы полезно узнать определение 'myObj.prop'. –

+0

Perfect. Обратное связывание также работает, используя parseInt. –