Flash 简单绑定是addeventlistener的快捷方式吗

Flash 简单绑定是addeventlistener的快捷方式吗,flash,apache-flex,actionscript,bindable,metatag,Flash,Apache Flex,Actionscript,Bindable,Metatag,我从来没有真正理解过绑定的意义,除了它是addeventlistener的有效缩写 还有别的吗?我错过什么了吗 谢谢, Flex 4中的DSD数据绑定我猜可以被描述为addEventListener()的快捷方式-但这有点像说汽车只是行走的快捷方式。如果您只是绕着块转,那没什么大不了的——但是如果您正在构建一个复杂的应用程序,其中包含大量的项呈现器和大量的数据点,这些数据点可能会在一瞬间发生变化,那么数据绑定允许您避免编写数百个addEventListener()和removeEventList

我从来没有真正理解过绑定的意义,除了它是addeventlistener的有效缩写

还有别的吗?我错过什么了吗

谢谢,
Flex 4中的DSD

数据绑定我猜可以被描述为addEventListener()的快捷方式-但这有点像说汽车只是行走的快捷方式。如果您只是绕着块转,那没什么大不了的——但是如果您正在构建一个复杂的应用程序,其中包含大量的项呈现器和大量的数据点,这些数据点可能会在一瞬间发生变化,那么数据绑定允许您避免编写数百个addEventListener()和removeEventListener()调用,以及它们的关联处理程序。在这种情况下,这是一件非常重要的事情。

数据绑定就是以声明方式定义数据在UI中的显示方式。实际上,它有点复杂,因为支持数据绑定功能的需求不仅仅是挂钩
addEventListener

实际上,这是一个非常强大的功能,为了进一步了解它,我们可以看一个简单的“Hello World”应用程序:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark">
    <s:HGroup>
        <s:TextInput id="input" />
        <s:Label text="Hello {input.text}" />
    </s:HGroup>

</s:Application>
稍后,在HelloWorld构造函数中,您将收到一个设置观察者的调用:

        _watcherSetupUtil.setup(this,
                function(propertyName:String):* { return target[propertyName]; },
                function(propertyName:String):* { return HelloWorld[propertyName]; },
                bindings,
                watchers);
这实际上就是:

watchers[0] = new mx.binding.PropertyWatcher("input", 
                                            { propertyChange: true }, 
                                            [ bindings[0] ] , 
                                            propertyGetter );
watchers[1] = new mx.binding.PropertyWatcher("text",
                                             { change: true,
                                               textChanged: true },
                                             [ bindings[0] ],
                                             null);

双向绑定会使事情变得更加复杂。

同意。数据绑定,如果使用得当,是非常强大和富有表现力的。它将数据显示在您期望的位置:显示它的UI元素所在的位置。它显著减少了代码,并允许您将数据与UI分离。我充分利用了这个特性,因为它是框架中最好的部分之一,IMO.+1也是我的。绑定可以非常强大。我的一个警告是避免过度使用绑定。绑定经常被过度使用,并可能导致性能问题,尤其是在ItemRenders中。我通过重写Flextras客户端的渲染器,使其不使用绑定,从而解决了Flextras客户端的许多内存问题。例如,没有一个Flex框架组件使用绑定。这是有原因的。@www.Flextras.com即使这样,我也不会说应该避免项目呈现器中的数据绑定(您也不是这样建议的)。我一直在项目呈现器中使用数据绑定,从来没有出现性能问题。尽管如此,我相信他们是可以存在的。尤其是去手机的时候。这是一个“了解你的工具并做出明智的决定”的案例。对于每个人都将使用的组件(如您的),避免数据绑定非常有意义。您不知道您的组件将如何使用。但是在一个50件物品和一个装订的清单中,它通常是好的。嗯,真的吗?ItemRenders获得了超级方便的可绑定“数据”属性。你建议不要约束那件事?我就是这样被教导去做的,但我是第一个承认我更像是一个闪光的人而不是一个灵活的人,所以我可能是错的!我想他是在说“小心点”。项目渲染器的性能可能会变差。这并不意味着它会。Jeff(Flextras)开发供每个人使用的组件,因此他需要针对最坏的情况进行优化。如果您没有注意到问题,我不会避免在项目呈现器中绑定(我也一直这样做)。只需知道这是一个你可能会遇到性能问题的地方。我非常喜欢避免预优化,这是一个很好的例子:)如果它成为问题,修复它是我的座右铭。
watchers[0] = new mx.binding.PropertyWatcher("input", 
                                            { propertyChange: true }, 
                                            [ bindings[0] ] , 
                                            propertyGetter );
watchers[1] = new mx.binding.PropertyWatcher("text",
                                             { change: true,
                                               textChanged: true },
                                             [ bindings[0] ],
                                             null);