• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>Flex>文章内容
  • Flex中Container的data属性绑定
  • 来源:harry's blog 作者:harry 2007-11-11 【

一直在玩AsWing,好久都没碰Flex,最近由于工作需要又用上了,今天碰到个问题-_-!!!

要用到一个TileList组件,并且自定义itemRenderer,itemRenderer中的数据我就想通过dataProvider来提供数据绑定,下面是TileList的部分代码

<mx:TileList xmlns:mx="http://www.adobe.com/2006/mxml" width="100%"
            dataProvider="{items}"
            itemRenderer="CustomItemRender">

items 是一个 ArrayCollection,里面放 itemRenderer的数据绑定对象,在 CustomItemRender中通过 Containerdata 属性得到绑定对象

现在需要写一个ItemModel 类,它的实例会放到items中,作为itemRenderer 的绑定数据,即itemRenderer中的data属性就是ItemModel的实例引用
ItemModel的部分代码

[Bindable]
public class ItemModel extends EventDispatcher {
    public var name:String;
}

然后是 CustomItemRender.mxml
注意我在绑定 Label text的时候用了 (data as ItemModel).name

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Label text="{(data as ItemModel ).name}" />
</mx:VBox>

测试的时候,运行是没啥问题,往items里添加new ItemModel() 的时候CustomItemRender中的Label正确显示了ItemModel中的name属性,但是控制台输出了

warning: unable to bind to property 'name' on class 'CustomItemRender'

绑定不了?? 我尝试在运行时修改ItemModel实例的name属性,但CustomItemRender中的Label不会改变......

哪里错了?? 围绕这个问题我断断续续搞了一天.... 试了各种办法后都没搞定
不过就在刚才,我把CustomItemRender中的

<mx:Label text="{(data as ItemModel).name}" />

改成

<mx:Label text="{data.name}" />

这样就行了..... - -!!!! 搞掂了....
我只是想加个as ItemModel 可以有代码提示嘛,并且还是为了以后的编程中,能确保data的数据类型,咋就不行呢??

俺写的这么详细,就是想让各位大大给俺看看,俺有哪里写的不对嘛? 如果不能写那个 as 的话,要是data对象中有好多属性要绑定,没有代码提示好累滴啊 :???:





上一篇:Flex Builder 3下使用Fluorine   下一篇:[Flex]在TextArea中嵌入圖像-1
您的评论
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)