`
strugglesMen
  • 浏览: 115170 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

Flex Data Binding详解(下)

阅读更多

接着上一篇继续讲:

  数据绑定除了用[Bindable]标签来申明以外,也可以用<mx:Binding/>组件和ActionScript实现。
  用<mx:Binding/>,例如:
  <mx:binding source="text1.text" destination="text2.text"/>
  <mx:binging source="text2.text" destination="text1.text"/>
  <mx:TextInput id="text1"/>
  <mx:TextInput id="text2"/>
  source为绑定源,destination为目的源,按上面的写法,不论是text1还是text2发生变化,都会引起对方的变化。细心的你也许会想这不会引起死循环吗?答案是否定的,不会引起死循环。我想应该是Flex内部的机制已经优化了这种情况,让其只触发一次。
  用ActionScript来绑定:
  1.使用bindProperty()。
   bindProperty(site:Object, prop:String,host:Object, chain:Object,commitOnly:Boolean = false):ChangeWatcher,例如:
   var myc:ChangeWatcher=BindingUtils.bindProperty(text2,"text",text1,"text");
   即当text1的值发生变化时text2也跟着变,site为目的对象,prop为目的属性,host为绑定源,china为绑定源属性链——关于属性链下面再讲,commitOnly默认为False,即不管是确认事件还是未确认事件都将触发绑定,而为True时,只有确认事件才能触发绑定,这个一般用不到,和Flex自身的事件机制有关,如果为false的话,当数据改变时将触发两次绑定事件,当为True时,只触发一次,自己可以用bindSetter方法来做测试。当不想绑定时可以用myc.unwatch()方法来解除绑定。
  
  2.使用bindSetter()。
  bindSetter(setter:Function, host:Object, chain:Object,commitOnly:Boolean = false):ChangeWatcher,例如:
  var myc:ChangeWatcher=BindingUtils.bindSetter(change,text1,"text",true);
  private function change(str:String):void
   {
   text2.text=str; 
   }
  change就是当绑定源发生变化时所触发的函数,其他参数都一样。
  3.使用ChangeWatcher.watch()。
  同样可以用ChangeWatcher.watch方法来监控对象属性的变化,非常有用。
  watch(host:Object, chain:Object,handler:Function,commitOnly:Boolean = false):ChangeWatcher,例如:
  var myc:ChangeWatcher=ChangeWatcher.watch(text1,"text",change);
  private function change(e:Event):void
   {
   text2.text=text1.text; 
   }
  这里的Event和绑定数据所定义的触发事件有关,你可以用所有事件的父类Event来表示。
 
  注意:
 as主要是通过mx.binding.utils.BindingUtils 这个类来实现数据绑定,用MXML和as实现数据绑定有以下几点不同:
  1.当使用AS做数据绑定时,bindProperty()或 bindSetter()方法中不能使用AS代码,这和MXML是不同的, 可以用bindSetter() 方法来申明一个绑定处理函数。
  2.当使用AS做数据绑定时,同样不能使用EX4语法,也就是说不能直接使用XML解析语法了。
  3.当使用AS做数据绑定时,在属性链中不能使用任何函数和数组。
  4.MXML具有更好的错误提示和警告功能。
  最后来讲讲属性链。
  属性链就是bindProperty()和 bindSettet()等方法中的chain参数所表示的对象,  有时也许绑定源并不只是text1.text这样的简单形式,也可以是类似于user.name.text1.text,那么就存在一个关系链的问题,如果这条链中的某一项发生了改变,会不会触发绑定呢?答案是如果你想让其改变其中的某一项都能触发数据绑定,那么这条链的每个元素必须是可绑定的。对于上面的这种形式,可以这样使用bindProperty方法:
  bindProperty(text2, "text", this, ["user", "name","text1","text"])
  就这么多吧,主要还是靠自己研究,希望对你有所帮助

原文地址:

 

分享到:
评论

相关推荐

    Flex Data Binding详解

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

    Android Data Binding

    Android Data Binding库是Google推出的一种强大的MVVM(Model-View-ViewModel)架构支持技术,它旨在简化Android应用中的UI逻辑,提高代码可读性和可维护性。本教程将深入探讨如何将Data Binding与RecyclerView结合...

    Data Binding with Windows Forms 2.0

    Data Binding with Windows Forms 2.0: Programming Smart Client Data Applications with .NET By Brian Noyes ............................................... Publisher: Addison Wesley ...

    Android Data Binding 代码实战 demo

    **Android Data Binding 框架详解与实战演示** 在Android应用开发中,数据绑定是一种将UI组件和数据源紧密关联的技术,它可以帮助开发者减少在Activity或Fragment中的样板代码,提高代码可读性和维护性。本实战项目...

    Data Binding with Windows Forms 2.0 Programming

    This book is all about the what and the why of binding to data sources in a Windows Forms application built using Visual Studio 2005. The book goes into great detail in explaining the rationale behind...

    Android Data Binding实战-入门篇

    Android Data Binding是Google推出的一种强大的数据绑定库,它旨在简化Android应用中的UI逻辑,通过将数据绑定到XML布局文件中,使代码更加清晰、可读性更强,同时也减少了Activity或Fragment中的样板代码。...

    WPF Data Binding with LINQ to SQL

    These tutorials describe how to map your classes to your tables manually (rather than with an automated tool like SqlMetal) so that you can have support for M:M relationships and data binding against ...

    AdventureWorks Data Binding sample

    《AdventureWorks 数据绑定示例详解》 在编程领域,数据绑定是将用户界面(UI)元素与应用程序的数据源连接起来的重要技术,使得UI能够实时反映出数据的变化。在VB.NET环境中,数据绑定为开发者提供了强大的功能,...

    Android Data Binding 在 library module 中遇到错误及解决办法

    生成的binding类会位于manifest中指定的package下的databinding包下。 问题在于,当你在library module中启用Data Binding时,编译器可能会生成抽象的binding类,并缺失了原本应该有的get方法。这是因为library ...

    ADF的data binding

    4. **Binding Context**:Binding Context是整个应用程序的上下文,它包含所有Binding Containers和Data Controls的信息。Binding Context提供了一个全局视图,使得在多个界面间共享数据和资源成为可能。 一个典型...

    AndroidDataBindingExample, Android Data Binding 代码实战.zip

    Android Data Binding 是 Android 平台上的一种强大的数据绑定框架,它简化了UI与数据之间的交互,使得开发者能够更专注于业务逻辑,而不是繁琐的事件处理和视图更新。这个压缩包"AndroidDataBindingExample, ...

    Android数据绑定Data Binding

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

    安卓-Data Binding+RecyclerView打造可以选择的三级列表

    在安卓应用开发中,构建可交互的用户界面是至关重要的,而Data Binding库与RecyclerView的结合使用能够有效地提高代码的可读性和维护性,同时实现复杂的列表展示,如本示例中的三级列表。本文将详细解析如何利用Data...

    Data Binding and Explicit Transactions

    在IT行业中,数据绑定(Data Binding)和显式事务(Explicit Transactions)是两个非常关键的概念,尤其是在处理数据存储和更新时。这篇博文“Data Binding and Explicit Transactions”将深入探讨这两个主题,帮助...

    Data Binding with Windows Forms 2.0 Programming Smart Client Data Applications with .NET

    《Data Binding with Windows Forms 2.0:编程智能客户端数据应用程序与.NET》是一本深入探讨.NET框架下Windows Forms 2.0数据绑定技术的专业书籍。数据绑定是将用户界面(UI)组件与数据源连接的过程,它使得应用...

    Android Data Binding Library 官方文档(译)

    Android Data Binding Library 官方文档中文翻译,出自https://blog.csdn.net/jjwwmlp456/article/details/54915981的博客,被我制作成离线版pdf以供保存, Google官方文档地址:...

    Spring MVC 学习笔记 十一 data binding

    **Spring MVC 数据绑定详解** 在Web开发中,Spring MVC框架为我们提供了一种高效的数据绑定机制,使得控制器(Controller)能够方便地将用户提交的表单数据与Java对象进行映射,简化了处理HTTP请求和响应的过程。本...

    flex4-binding-custom-Class.rar_flex_flex4

    数据绑定的核心概念是`&lt;mx:Binding&gt;`或`&lt;s:Binding&gt;`标签,但更常见的是直接在属性赋值时使用`{}`表达式。 1. **创建自定义类**: 在AS文件中,你需要定义一个自定义类。这个类通常会扩展Flex的基类,如`...

Global site tag (gtag.js) - Google Analytics