`

flex中绑定的机理(binding mechanism)

阅读更多


Flex实际上在编译的时候会产生一些Watcher代码去监视绑定标签所指定的表达式。在运行的时候,当绑定源的属性得到修改,那么这个Watcher监视类就会触发change事件去执行绑定更新的工作。在Flex中有三种绑定数据方式:
1、{}
2、<mx:Binding> tag in MXML
3、BindingUtils methods in ActionScript


1、最常用的就是通过大括号{}的形式。
在{}绑定方式中,可以绑定property,ActionScript expressions,E4
X expression和ActionScript functions。绑定一个属性或者一段AS的表达式已经应用的非常普遍了。偶尔我们需要用到绑定的是一个AS的函数,但是,绑定一个函数的时候很多人 会碰到问题,为什么我的数据没有自动更新呢?本人也曾经碰到过,看了开发文档才知道,原来忽略了一个细节问题。
就是在绑定函数的时候,通常情况下需要一个bindable的property作为该函数的参数。

<?xml version="1.0"?>
<!-- binding/ASInBraces.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
     <mx:Script>
          <![CDATA[
               [Bindable]
               public var inString:String; // 绑定此变量
 
               public function getNewText(sourceString:String):String {
                    return sourceString.toUpperCase();
               }
          ]]>
     </mx:Script>
     <mx:TextInput id="myTI" text="Enter text here"/>
     <mx:Button label="Trigger Binding" click="inString=myTI.text;"/>
     <mx:TextArea text="{getNewText(inString)}"/>
</mx:Application>

 

 

这里的inString一旦发生改变,会直接触发函数getNewText进行重新执行。
但如果你将函数的参数inString去掉,而直接放到getNewText()中,那么这个函数会在系统初始化的时候执行一次,而起不到绑定的效果。我可是在实际开发中有深刻体会。


2、用<mx:Binding>标签效果和{}一样,只需要指定source和destination两个属性即可,

如:
 

<mx:Binding source="firstName.text" destination="myEmployee.name.first"/>

 
在<mx:Binding>的source属性中也可以使用{},如下面的例子中,其效果是等同的

<?xml version="1.0"?>
<!-- binding/ASInBindingTags.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
     <mx:Script>
          <![CDATA[
               public function whatDogAte():String {
                    return "homework";
               }
          ]]>
     </mx:Script>
     <mx:Binding source="'The dog ate my '+ whatDogAte()"  destination="field1.text"/>
     <mx:Binding  source="{'The dog ate my '+ whatDogAte()}" destination="field2.text"/>
     <mx:Binding source="The dog ate my {whatDogAte()}" destination="field3.text"/>
     <mx:TextArea id="field1"/>
     <mx:TextArea id="field2"/>
     <mx:TextArea id="field3"/>
</mx:Application>

 

3、在ActionScript中实现绑定
这种方法是使用mx.binding.utils.BindingUtils类来实现的。
如:

BindingUtils.bindProperty(textarea, "text", textinput, "text");

 

就是直接绑定了两个输入框的text属性,还可以用bindSetter来绑定一个数据源和一个set函数。

如:

public function mySetterBinding(event:FlexEvent):void {
     var watcherSetter:ChangeWatcher =  BindingUtils.bindSetter(setMyString, textInput2, "text");
}


这里就是将textInput2的text属性setter函数和setMyString函数绑定起来,
一旦textInput2的text被修改,那么将会触发setMyString函数。
 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    flex数据绑定的原理

    在Flex开发中,数据绑定(Data Binding)是一种强大的机制,它允许UI组件的状态与应用程序的数据模型之间自动同步。数据绑定的原理是通过监听数据源的变化,并自动更新与之绑定的UI组件,反之亦然,从而简化了代码并...

    FLEX数据绑定四种方式

    本文将详细介绍Flex中数据绑定的四种主要方式:“{}”绑定表达式、[Bindable]绑定符号、`&lt;mx:Binding&gt;`标签以及BindingUtils动态绑定。 #### 二、“{}”绑定表达式 **简介** “{}”绑定表达式是一种最直接和简单的...

    WPF Binding绑定 Command命令基础学习源码

    2. **属性绑定**:你可以对UI元素的任何属性进行绑定,比如TextBox的Text属性,只需在XAML中指定`Text="{Binding PropertyName}"`,其中PropertyName是源对象中的属性名。 3. **数据上下文(DataContext)**:设置...

    Flex数据绑定专题

    数据绑定是Flex应用程序开发中的核心概念之一,它指的是将一个对象中的数据与另一个对象中的数据建立连接的过程。通过数据绑定,开发者可以实现在应用程序的不同层级间高效地传输数据。一个典型的数据绑定包括三个...

    Android数据绑定Data Binding

    在Android开发中,数据绑定(Data Binding)是一个强大的框架,它允许开发者更加直观地将UI组件与业务数据关联起来,从而简化代码并提高可维护性。这个Demo程序旨在展示数据绑定和事件绑定的基本用法,帮助开发者...

    Flex数据绑定[收集].pdf

    要解决这个问题,开发者可以使用Flex SDK中的调试工具,如在`BindingManager.as`和`Binding.as`类中查找错误。通过设置断点和检查绑定对象的属性,可以发现导致绑定失败的原因。此外,`BindingManager`类的`...

    Flex 数据绑定

    Flex 数据绑定是Adobe Flex框架中的一个核心特性,它允许开发者创建动态、响应式的用户界面,使得数据模型的变化能够实时反映到视图上,反之亦然。这种机制大大简化了UI与后台数据同步的过程,减少了手动更新UI的...

    Flex Data Binding详解

    Flex Data Binding是Adobe Flex框架中的核心特性之一,它允许开发者创建数据驱动的应用程序,通过将UI组件的属性与数据模型的属性直接关联,实现实时的数据同步。在Flex中,数据绑定确保当数据源发生变化时,相关的...

    flex数据绑定

    在Flex中,数据绑定主要通过`&lt;mx:Binding&gt;`标签或ActionScript来实现。当数据源发生变化时,绑定的目标会自动更新,反之亦然。这种双向数据绑定为开发者提供了强大的能力,减少了手动更新UI的繁琐工作。 1. **基本...

    flex4-binding-custom-Class.rar_flex_flex4

    在Flex 4中,数据绑定是一项强大的特性,它允许开发者创建动态、响应式的用户界面,无需编写大量的事件处理代码。本教程将深入讲解如何在Flex 4中对自定义类进行数据绑定,通过一个实际的MXML文件和AS文件示例来阐述...

    flex3 数据绑定 总结

    总的来说,Flex 3 的数据绑定是一种强大的机制,它简化了应用程序中数据流的管理。通过 MXML 或 ActionScript,开发者可以选择最适合其需求的方式来实现数据绑定,从而提高代码的可读性和可维护性。无论是简单的属性...

    Flex Bind数据绑定实例代码

    在ActionScript 3.0中,Flex的数据绑定主要通过两个类来实现:mx.binding.Binding和mx.binding.utils.BindingUtils。Binding类用于创建和管理数据绑定,而BindingUtils提供了一些静态方法,方便进行数据绑定操作。 ...

    flex企业应用开发笔记-数据绑定

    在Flex企业应用开发中,数据绑定是连接UI组件与数据模型的重要机制,使得视图能够自动反映模型的变化,反之亦然。这篇笔记主要探讨的是如何在Flex中实现数据绑定,以及其在实际应用中的作用。 数据绑定是Flex框架的...

    flex页面跳转及数据绑定

    在Flex开发中,页面跳转和数据绑定是两个核心概念,它们对于构建动态且交互性强的应用至关重要。让我们分别深入探讨这两个主题。 首先,Flex页面跳转。在Flex中,有多种方式来实现场景间的切换: 1. **ViewStack...

    Scala数据绑定框架Binding.scala.zip

    Binding.scala 是 Scala 上的数据绑定框架,既可以运行在 JVM 上,也可以通过 Scala.js 编译成 JavaScript 运行在 Node.js 或者浏览器中。Binding.scala 也是一套动态页面开发框架,使你可以直接在代码中内嵌 ...

    WPF入门-04绑定Binding(附c#代码)

    由于依赖属性具有内置的更改通知支持,当在源对象中改变依赖属性的值时,会立即更新目标对象中的绑定属性 {Binding ElementName=源对象名字, Path=源对象名字的属性} //Path除了可以直接绑定属性之外,还可以绑定...

    Android Studio3.6新特性之视图绑定ViewBinding使用指南

    要使用视图绑定,需要在 build.gradle 文件中启用 viewBinding 功能。在 Android Studio 3.6 中,可以在 build.gradle 文件中添加以下代码: ``` android { ... viewBinding { enabled = true } } ``` 在 ...

    Flex4 中文API

    4. **Data Binding**:Flex4支持数据绑定,允许UI元素与数据模型直接关联,当数据模型改变时,UI会自动更新,反之亦然。这对于实现动态、响应式的用户界面非常有用。 5. **States and Effects**:Flex4引入了状态...

    xml 绑定 binding

    XML绑定(XML Binding)是一种技术,它允许程序员将XML文档的数据结构映射到编程语言中的对象,反之亦然。这简化了XML数据的处理,使得开发者可以像操作普通对象一样处理XML数据,而无需手动解析和组装XML字符串。在...

Global site tag (gtag.js) - Google Analytics