flex学习笔记

1.前端flex的对象和java端的对象名字要一致,java端的对象必须序列化,否则无法被flex端调用转化
java后台传回的list里边的对象,必须flex端也有此对象,而且两个对象的属性要一致,否则,不能回调

2.回调函数不起作用,有可能是因为回调函数名字引起的

flex从java端取多个list封装的对象时,对各个datagrid要用数据绑定,回调时用datagrid.dataProvider会报错。

新建窗体时,new 出来的窗体的监听要和new方法放在一起,否则报错,比如监听写在ini方法中,new窗体写在其他方法中。

窗体中的input初始化是不可以指定为空字符串,否则报函数调用序列不正确,或前面的调用不成功。

<mx:Component></mx:Component>标签对中用到其他组件或<mx:Script>标签,访问主<mx:Script>标签中的方法或变量要用前缀parentDocument+方法/变量名



3.再DataGrid中的var ordersVO :OrderVO = dataGrid.selectedItem as OrderVO 如果转换的对象错了,不会调用相应的java端方法,当然回调方法也不会调用

项目中如果用到module,必须设置以下参数,否则,dataGrid.selectedItem as 转化对象会出错,转化后的对象始终是NULL

module.load(ApplicationDomain.currentDomain);

datagrid中显示图片,首先把回调返回的数组循环一遍,拼接图片的url地址,
<mx:DataGridColumn headerText="图片" dataField="proSku" width="50">
    <mx:itemRenderer>
<mx:Component>
  <mx:Image width="50"
height="50"
source="{this.data.productImages}">
  </mx:Image>
</mx:Component>
   </mx:itemRenderer>
</mx:DataGridColumn>


4.Can't write to a readonly object 是java 端业务方面的事物没加@Transactional(readOnly = true)而实体中的缓存机制是@Cache(usage = CacheConcurrencyStrategy.READ_ONLY) 导致不一致报错

5.显示中文的日期控件 <mx:DateField x="383" y="62" id="buyDate2" width="115" yearNavigationEnabled="true" dayNames="['日','一','二','三','四','五','六']"  monthNames='["一","二","三","四","五","六","七","八","九","十","十一","十二"]' formatString="YYYY-MM-DD"/>

把日期控件中的字符串类型转换成日期类型:DateField.stringToDate(buyDate2.text, "YYYY-MM-DD");
把日期类型转化成字符串类型DateField.dateToString(Date,String)

<mx:FormItem label="开始时间:" width="42%" x="22" y="110">
<mx:HBox horizontalGap="1">
<mx:DateField id="startDate" editable="false"
selectedDate="{new Date()}"
formatString="YYYY-MM-DD"
dayNames="[日,一,二,三,四,五,六]"
monthNames="[一,二,三,四,五,六,七,八,九,十,十一,十二]"/>
<mx:NumericStepper id="startHour" maxChars="2" maximum="23" width="50" />
<mx:Label text="时" width="18"/>
<mx:NumericStepper id="startMinute" maxChars="2" maximum="59" width="50" />
<mx:Label text="分" width="18"/>
</mx:HBox>
</mx:FormItem>




6.回调函数用法
        private function searchSale():void {
            var ordersVO :OrderVO = orderDataGrid.selectedItem as OrderVO
            var productService : BackService = new BackService(resultSale);
            productService.findSale(ordersVO.sid);
            orderSid = ordersVO.sid;
        }
        //返回数据
        public function resultSale(data:Object):void {
            proSale.dataProvider = data as Array;
        }

7.为CheckBox绑定初始化数据

        [Bindable]
        public var brandsData:ArrayCollection = new ArrayCollection(
                [
                    {label:"全部",data:"1"}
                ]);
       <mx:ComboBox x="618.5" y="62" width="161" id="brand" dataProvider="{brandsData}"/>


8.一直被这个问题困扰,就是在设置UI的Visible的时候,改组件的位置一直被占着,比较恶心,今天在这里发现了一个方法,

操作方法如下设置:

includeInLayout为false即可


9.DataGrid 固定一列滚动 lockedColumnCount="1" horizontalScrollPolicy="on"

获取事件源的id
private function choose(event:MouseEvent):void{
Button(event.currentTarget).id=="small"
}


10,为Textinput 添加监听
                       private function check(e:Event = null):void{
if (StringUtils.trim(username.text).length<1 || StringUtils.trim(password.text).length<1) {
btnLogin.enabled=false;
}else{
btnLogin.enabled=true;
}
}

                                username.addEventListener(Event.CHANGE,check);
password.addEventListener(Event.CHANGE,check);

11.利用numDividers属性, getDividerAt()函数以及visible属性设置HDividedBox容器dividers有效或者无效。

                var idx:uint;
                var len:uint = hDividedBox.numDividers;
                for (idx = 0; idx < len; idx++) {
                    hDividedBox.getDividerAt(idx).visible = value;
                }
12,只可选择当前以后的日期,不可选中过去的日期
  <mx:DateField id="dateField1"
                    showToday="false"
                    selectableRange="{{rangeStart:new Date()}}" />

13,Array转化为ArrayCollection
                        [Bindable]   
var myArray:Array = [
{Name: "桌子", Number: 2000},
{Name: "板凳", Number: 1000},
{Name: "书柜", Number: 1500},
];
 
[Bindable]   
public var myCollection:ArrayCollection=new ArrayCollection(myArray); 

14,类windows关闭窗口
<mx:TitleWindow showCloseButton="true"
styleName="titleWin"
close="PopUpManager.removePopUp(this);" >


15,日期默认值
<mx:Script>
<![CDATA[
import mx.utils.StringUtil;
import mx.controls.Alert;
import mx.events.CalendarLayoutChangeEvent;
private function init():void{
this.dfStartTime.selectedDate = new Date("Sun Jun 1 10:15:18 UTC-0100 2008");
this.dfStartTime.addEventListener(CalendarLayoutChangeEvent.CHANGE, OnStartTimeChange);
}
private function OnStartTimeChange(event:CalendarLayoutChangeEvent):void{
Alert.show("test");
}
]]>
</mx:Script>
<mx:DateField id="dfStartTime" />

16,flex tree 初始化用override public function set data(value:Object):void 时候,如果遍历用tree.selectedItem=xmlList[i];
会报错Error #1010: 术语尚未定义,并且无任何属性。


17,模块无法加载时,检查是否是tree.xml中的模块编译后的文件名与模块名称不一致问题。

18,当flex端调用java 端控制器时,控制器必须有返回值,否则报流错误或文件错误。

navigateToURL(request, "_blank");


19,打开网址
  private function img_doubleClick(evt:MouseEvent):void {
                var url:String=ServiceLocator.SERVER+"/";
                var urlReq:URLRequest = new URLRequest(url);
                navigateToURL(urlReq, "_blank");
            }


20. Stirng 转换成int var vIndex:int=0;
vIndex=int(Number(toIndex.text));
var myInt:int = parseInt(input.text);
    var myFloat:Number = parseFloat(input.text);
    var myNumber:Number = new Number(input.text);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值