`
czwlucky
  • 浏览: 49906 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

Flex数据绑定失效的问题

    博客分类:
  • Flex
 
阅读更多

 

我在TabNavigator中的多个tab页内都做了组件间的属性绑定操作:

<mx:Image id="imgVideo" source="{videoClass}" visible="false" width="100%" height="100%" horizontalAlign="center"
includeInLayout="{imgVideo.visible}"/>

<mx:Button width="30" enabled="{imgVideo.visible}" label="播放" paddingLeft="0" paddingRight="0"/>

 

 

protected function changeHandler(event:IndexChangedEvent):void

{

if (event.newIndex == 1 && this._question && this._question.soundSourceMode.filePath)

{

loadSoundFromFilePath(this._question.soundSourceMode.filePath);

}

else if (event.newIndex == 2 && this._question && this._question.videoSourceMode.filePath)

{

imgVideo.visible = true;

videoBtn.visible = false;

}

}

 

 

 

其它的tab页中都正常,唯有上面这段代码没起作用。

 

 

经过代码替换,删除调试等没有发现问题。但一篇博客让我明白了原由:

Flex 数据绑定易犯的错误:普遍的误用和错误

 

 

原来是组件初始化的问题, 我改变image的属性时该组件初始化还未完成,也就是说属性的改变并发生在属性绑定之后,而属性的绑定动作在初始化时是有异常的。当我通过as改变了组件的属性时,它并未起作用。 相反,我另一段代码(与上面非常类似),只是因为是在一段延迟之后才做了属性的变化,因此它起到了应有的作用。 从上面as代码中可以看出,我是在change事件中做的属性的改变。 但第一个改变发生在另外一个方法中,实际这个方法中有一段异步加载的代码,也就有了一些延时,所以它没问题。 但第二个是立即执行的。 我的子代加载策略是自动的,所以在方法事件处理时子组件并未初始化完毕,只是可以访问了。

 

我试了两种方法, 一是将子代加载策略设置为all,二是让属性的改变作一个延迟:

creationPolicy="all"

or

 

callLater(function():void

{

imgVideo.visible = true;

videoBtn.visible = false;

});

 

真是如博主所说: 若开发者不完全理解它的机制的话,可能会给程序造成初始化缓慢或失败的问题。

 

分享到:
评论

相关推荐

    flex数据绑定

    在使用数据绑定的过程中,开发者经常会遇到一些不易察觉的错误,这些错误往往会导致绑定失效且不会产生明显的错误提示。例如,在示例代码中,开发者尝试将`xml.user.name`绑定到一个`Label`控件上,但是在预初始化...

    Flex数据绑定[收集].pdf

    在上述示例中,由于在预初始化阶段将`xml`变量设置为null,导致`xml.user.name`的绑定失效,界面上的Label控件没有显示任何内容。通过调试,可以发现XML对象的值为null,从而解决了问题。 总之,Flex数据绑定是一种...

    FLEX企业应用开发实战.part1

     2.4.3 可以用于数据绑定的属性  2.4.4 数据绑定的用途  2.4.5 使用Bindable元数据标记  2.4.6 绑定到函数、对象和数组  2.4.7 使用可绑定属性链进行工作  2.5 Flex中的组件化编程  2.5.1 认识Flex组件...

    FLEX企业应用开发实战.part2

     2.4.3 可以用于数据绑定的属性  2.4.4 数据绑定的用途  2.4.5 使用Bindable元数据标记  2.4.6 绑定到函数、对象和数组  2.4.7 使用可绑定属性链进行工作  2.5 Flex中的组件化编程  2.5.1 认识Flex组件...

    Flex股票分析图

    2. 设置数据源:将股票数据绑定到`ArrayCollection`,这是Flex中最常用的数据容器。 3. 创建图表:实例化`LineChart`或`ColumnChart`,并设置其数据Provider为上面创建的数据源。 4. 配置图表:定制轴标签、图例、...

    【原创】flex控制flash元件

    5. **数据绑定**:Flex支持双向数据绑定,使得UI状态和应用程序数据可以自动保持同步。在控制Flash元件时,数据绑定可能是关键功能。 6. **事件处理**:Flash元件的交互通常依赖于事件,如鼠标点击、键盘输入等。博...

    Flex Debug

    开发者可以混合使用MXML和ActionScript来编写Flex应用,Debug时需关注MXML组件间的交互和数据绑定问题。 3. **Flex Builder或Flash Builder**:这些是Adobe提供的集成开发环境(IDE),它们内置了强大的Debug工具,...

    Flex企业应用开发实战源代码

    2.4.3 可以用于数据绑定的属性 39 2.4.4 数据绑定的用途 40 2.4.5 使用Bindable元数据标记 40 2.4.6 绑定到函数、对象和数组 43 2.4.7 使用可绑定属性链进行工作 46 2.5 Flex中的组件化编程 46 2.5.1 认识Flex...

    Rss.rar_flex_rss开发

    7. **错误处理**:RSS源可能会出现各种问题,如URL失效、服务器错误等,因此阅读器需要有良好的错误处理机制,向用户友好地显示错误信息。 8. **性能优化**:处理大量RSS数据时,性能优化至关重要。合理使用数据...

    Adobe Flex 3 Component Explore

    4. 数据驱动:利用Flex的数据绑定机制,将组件与数据模型关联,实现动态更新界面。 5. 动态创建和销毁组件:在运行时根据需要动态添加或移除组件,以优化性能和内存使用。 6. 组件扩展:学习如何继承现有组件并...

    flex事件讲解

    2. **数据绑定事件**:当数据源发生变化时,这些事件会被触发。例如,Change事件会在数据绑定的值改变时触发。 3. **用户交互事件**:这些事件与用户的输入和操作有关,如MouseDown、MouseUp、Click、KeyDown和...

    Flex3组件和框架的生命周期

    Flex3提供了丰富的UI组件库,支持数据绑定、事件处理等高级特性,能够帮助开发者快速构建交互式应用。 #### Flex3组件生命周期 **组件的构造阶段(birth)** 这是组件生命周期的开始阶段,主要完成组件实例化的...

    理解Flex3的组件和框架的生命周期.doc

    Flex3 是 Adobe 开发的一种用于构建富互联网应用程序(RIA)的框架,它基于 ActionScript 3.0 和 Flash ...通过掌握这些生命周期概念,开发者可以更好地控制组件的行为,优化性能,以及解决潜在的内存泄漏和效率问题。

    flex3组件和框架的生命周期

    Flex3提供了丰富的UI组件库和强大的数据绑定能力,支持动态网页的快速开发。 #### Flex3组件生命周期 **构造阶段** 组件生命周期的第一个阶段是构造阶段。在这个阶段,组件对象被创建,并且其属性和事件监听器被...

    理解Flex3组件和框架的生命周期.pdf

    - **失效机制的周期**:组件可能因各种原因进入失效状态,如数据绑定失败或配置错误等。 - **失效机制的三种类型**:Flex 定义了几种不同的失效类型,每种类型对应不同的错误情况。 - **生效机制阶段**:组件恢复...

    FLEX ArrayCollection删除过滤的数据问题解决

    在Flex开发中,ArrayCollection是一种常用的集合类,它继承自Array并添加了对数据绑定和事件处理的支持。然而,当ArrayCollection应用了过滤器后,直接使用`removeItemAt()`方法尝试删除过滤后的数据可能会遇到问题...

    Flex wav播放

    它提供了丰富的用户界面组件和强大的数据绑定机制,使得开发人员可以便捷地创建交互式的Web应用。 在描述中提到的“NULL”可能是因为原始信息缺失,但我们可以推测这篇博文可能是分享了一个关于如何在Flex项目中...

    IT技术文章示例

    线程同步问题是多线程编程中常见的问题,如果不妥善处理,可能导致数据不一致、死锁等问题。解决线程同步问题的方法包括使用锁机制、信号量、Monitor类、Thread类的Synchronized关键字等。 ### 11. Flex与Spring、...

Global site tag (gtag.js) - Google Analytics