加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

不了解动态数据绑定(bindPropety)的基础知识在Flex中

发布时间:2020-12-15 02:10:21 所属栏目:百科 来源:网络整理
导读:我需要动态绑定在运行时创建的组件的属性.在这种特殊情况下,请假设我需要使用bindProperty. 我不太明白为什么下面的简单测试失败了(参见代码).单击按钮时,标签文本不会更改. 我意识到使用传统的非动态绑定有更简单的方法可以解决这个特定的例子,但我需要在使
我需要动态绑定在运行时创建的组件的属性.在这种特殊情况下,请假设我需要使用bindProperty.

我不太明白为什么下面的简单测试失败了(参见代码).单击按钮时,标签文本不会更改.

我意识到使用传统的非动态绑定有更简单的方法可以解决这个特定的例子,但我需要在使用bindProperty方面理解它.

有人可以帮我理解我错过的东西吗?

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="Tools.*" minWidth="684" minHeight="484" xmlns:ns2="*" creationComplete="Init();">
  <mx:Script>
    <![CDATA[
      import mx.collections.ArrayCollection;
      import mx.binding.utils.*;
      public var Available:ArrayCollection=new ArrayCollection();

      public function get Value():String {
        return (Available.getItemAt(0).toString());
      }

      public function Init():void {
        Available.addItemAt('Before',0);
        BindingUtils.bindProperty(Lab,'text',this,'Value');
      }

      public function Test():void {
        Available.setItemAt('After',0);
      }
    ]]>
  </mx:Script>
  <mx:Label x="142" y="51" id="Lab"/>
  <mx:Button x="142" y="157" label="Button" click="Test();"/>
</mx:WindowedApplication>

提前致谢.

解决方法

正如Glenn所提到的,你需要在Value上添加[Bindable]标签.

此外,您尚未为该属性定义setter.仅在调用相应的setter时才调用数据绑定.流程类似于:您调用setter – Flex通过调用getter来更新数据.

[Bindable]
  public function get value():String {
    return (Available.getItemAt(0).toString());
  }

  public function set value(v:String):void {
    Available.setItemAt(v,0);
  }

  public function init():void {
    Available.addItemAt('Before',0);
    BindingUtils.bindProperty(Lab,'Value');
  }

  public function iest():void {
    value = "After";
  }

请注意,我已根据常规约定将函数和属性的名称更改为小写. InitialCaps仅用于类名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读