Flex 4对不匹配类型属性的双向数据绑定
问题描述:
真的没有简单的方法来对不匹配类型属性执行双向数据绑定吗?在下面的例子我试图两个属性彼此结合:String
类型(从s:TextInput
text
属性)的一个和另一个Number
型的(从Foo
bar
属性)Flex 4对不匹配类型属性的双向数据绑定
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: Implicit coercion of a value of type String to an unrelated type Number.
我明白了为什么错误发生,但我想知道,如果我只是无知的东西(也许是某种Flex 4中的元数据),这将允许尝试在之间的转换Ť WO类型,如果这种转换失败,抛出一个运行时错误...
答
我最终为我的对象使用了data renderer,这对数据类型是盲目的。所以,我想唯一的解决方法是上传到Object或*并调用你“知道”的方法。虽然这样做可能会产生运行时错误,通常在编译时会被捕获,但我没有看到更好的解决方案。
答
我能想出是Foo
改变的财产bar
类型*
(星是外卡的唯一的事情,这可以防止在编译时进行类型检查)。但我仍然非常想知道是否有办法保持这种类型...