Flex — Как привязать (двусторонне) целое число к полю ввода текста

#apache-flex #forms #binding #types

#apache-flex #формы #привязка #типы

Вопрос:

Как двусторонне привязать целое число к полю ввода в Flex / FB4? is_admin — это целое число :

 <s:TextInput id="textUserIsAdmin" text="@{user.is_admin}" width="5"/>
  

Я получаю:

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

Существует ли другой тип ввода, или я должен привязать другим способом?

Ответ №1:

Короткий ответ, вы не можете выполнить двустороннюю привязку при попытке изменить саму природу объекта, который вы привязываете. Они должны быть одинаковыми, иначе это не сработает. С учетом сказанного, существует обходной путь:

 <s:TextInput id="textUserIsAdmin" text="{user.is_admin}" restrict="0-9" change="user.is_admin = int(textUserIsAdmin.text)"/>
  

Как вы можете видеть здесь, я привязываю исходное значение из модели, но затем, когда пользователь что-то вводит, отправляется событие изменения, а значение TextInput преобразуется и сохраняется. Я также добавил ‘restrict’, чтобы можно было вводить только числа.

Ответ №2:

РЕДАКТИРОВАТЬ: Убедитесь, что я даю вам ответ, который вы хотите.

Если вы хотите, чтобы значение целого числа было в TextInput и вы хотите преобразовать значение textinput в user.is_admin, используйте следующее:

 <s:TextInput id="textUserIsAdmin" text="@{user.is_admin.toString()}" change="user.is_admin = int(textUserIsAdmin.text);" width="5" />
  

Надеюсь, это поможет.

Комментарии:

1. Вы должны прочитать вопрос. Он хочет преобразовать строку в int.