Flex 4 двусторонняя привязка данных к свойствам несоответствующих типов - PullRequest
4 голосов
/ 02 декабря 2010

Неужели нет простого способа выполнить двустороннее связывание данных со свойствами несоответствующих типов?В приведенном ниже примере я пытался связать два свойства друг с другом: одно типа String (text свойство из s:TextInput), а другое типа Number (bar свойство из Foo)

package com.example
{
    public class Foo
    {
        [Bindable] public var bar:Number;
    }
}

<?xml version="1.0" encoding="utf-8"?>
<s:Application
    xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"

    xmlns:ex="com.example.*"
>
    <fx:Declarations>
        <ex:Foo id="foo" />
    </fx:Declarations>
    <s:TextInput text="@{foo.bar}" /><!-- error at this line -->
</s:Application>

Попытка скомпилировать этот код приводит к следующей ошибке:

1067: неявное приведение значения типа String к несвязанному номеру типа.

Я понимаю, почему возникает ошибка, но мне было интересно, не знаю ли я просто о чем-то (возможно, о каких-то метаданных Flex 4), которое позволило бы предпринять попытку преобразования между этими двумя типами и выдать ошибку во время выполненияесли такое преобразование не удается ...

Ответы [ 2 ]

0 голосов
/ 23 декабря 2010

В итоге я использовал рендеринг данных для моего объекта, который не соответствует типу данных.Итак, я полагаю, что единственное решение состоит в том, чтобы преобразовать объект или * и вызвать методы, которые вы «знаете».Хотя это может привести к ошибкам во время выполнения, которые обычно выявляются во время компиляции, лучшего решения я не вижу.

0 голосов
/ 02 декабря 2010

Единственное, что мне удалось придумать, - это изменить тип свойства bar в Foo на * (звездочка - это подстановочный знак, который запрещает проверку типов во время компиляции).Но я все еще очень хотел бы знать, есть ли способ сохранить тип ...

...