Apache flex 如何从FlexUI转换到ApacheRoayle

Apache flex 如何从FlexUI转换到ApacheRoayle,apache-flex,apache-royale,Apache Flex,Apache Royale,我有Main.MXML文件在其中我有另一个view ReportTab.mxmlnavas是这个页面的根标记在这个下面我有更多的另一个页面RaviReport.mxmlnavas是这个页面的根标记在这个页面中我有formItem一旦我提交它们,我需要使用RemoteObject标记从备份中获取数据,我必须在DATAGRID中呈现数据。当我加载Main.mxml文件时,我可以成功编译,但控制台中出现错误。 EventDispatcher.js:74未捕获类型错误:indicatorClass不是构

我有Main.MXML文件在其中我有另一个view ReportTab.mxmlnavas是这个页面的根标记在这个下面我有更多的另一个页面RaviReport.mxmlnavas是这个页面的根标记在这个页面中我有formItem一旦我提交它们,我需要使用RemoteObject标记从备份中获取数据,我必须在DATAGRID中呈现数据。当我加载Main.mxml文件时,我可以成功编译,但控制台中出现错误。 EventDispatcher.js:74未捕获类型错误:indicatorClass不是构造函数 在mx.containers.FormItem.mx_containers_FormItem_显示指示器FormItem.js:718 位于mx.containers.FormItem.updateDisplayList FormItem.js:397 在mx.containers.FormItem.updateFormiteDisplayList FormItem.js:409 在mx.containers.FormItem.formitelayout.updateDisplayList FormItem.js:1101 位于mx.containers.FormItem.FormItemLayout.mx.containers.beads.BoxLayout.layout BoxLayout.js:115 在mx.containers.FormItem.FormItemLayout.org.apache.royale.core.LayoutBase.performLayout LayoutBase.js:247 在mx.containers.FormItem.FormItemLayout.org.apache.royale.core.LayoutBase.handlelayoutRequired LayoutBase.js:152 在mx.containers.FormItem.goog.events.EventTarget.fireListeners EventTarget.js:284 位于Function.goog.events.EventTarget.dispatchEventInternal EventTarget.js:381 在mx.containers.FormItem.goog.events.EventTarget.dispatchEvent EventTarget.js:196

我已经尝试删除FormItem,并且刚刚添加了RaviReport.mxml,但是我的画布隐藏了label元素。请建议我如何在Royale中使用navigationBar或ViewSTACK集成视图

Main.MXML

错误 EventDispatcher.js:74未捕获类型错误:indicatorClass不是构造函数 在mx.containers.FormItem.mx_containers_FormItem_显示指示器FormItem.js:718 位于mx.containers.FormItem.updateDisplayList FormItem.js:397 在mx.containers.FormItem.updateFormiteDisplayList FormItem.js:409 在mx.containers.FormItem.formitelayout.updateDisplayList FormItem.js:1101 位于mx.containers.FormItem.FormItemLayout.mx.containers.beads.BoxLayout.layout BoxLayout.js:115 在mx.containers.FormItem.FormItemLayout.org.apache.royale.core.LayoutBase.performLayout LayoutBase.js:247 在mx.containers.FormItem.FormItemLayout.org.apache.royale.core.LayoutBase.handlelayoutRequired LayoutBase.js:152 在mx.containers.FormItem.goog.events.EventTarget.fireListeners EventTarget.js:284 位于Function.goog.events.EventTarget.dispatchEventInternal EventTarget.js:381
在mx.containers.FormItem.goog.events.EventTarget.dispatchEvent EventTarget.js:196

如果您从一个简单的工作文件开始并开始向其中添加内容,我的建议是

在Royale中,没有像Flex MX/Spark那样只有一个UI集。您可以选择Basic、Jewel、Emulation MX/Spark和MDL。所以第一件事是:你想选择什么UI集?。考虑到Emulation MX/Spark仍在进行中,尚未完全工作。也许Jewel或Basic更容易实现,但您需要根据新的标记和API调整UI代码

例如,在Jewel中,您可以检查和查看它是如何完成的


嗨,拉维坎特,这种回答太笼统了。我可以给你一些观点,但很难将这里的多个部分连接到这些观点。还有一些部分,比如如何在视图中加载深度为N倍的视图,不容易理解您所指的内容。我建议你在新的答案中更简短地回答你的具体疑问或问题,这样我们就可以帮助你了。嗨@CarlosRovira我已经更新了我的问题,请你再重复一遍这个问题。提前谢谢。
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:view="com.sp.cpem.view.*" backgroundColor="#FFFFFF" verticalGap="0" horizontalGap="0" paddingTop="0" paddingLeft="2" paddingRight="2" paddingBottom="2" pageTitle="EXAMPLE">

    <mx:Script>
        <![CDATA[

    ]]>

    </mx:Script>


        <mx:ViewStack id="myViewStack" borderStyle="none" width="100%" height="100%">           

            <view:ReportTAB id ="repo" label="REPORTING" />

        </mx:ViewStack>        
</mx:Application>


**ReportTAB.MXML:**

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:view="com.sp.cpem.view.reports.*" width="100%" height="100%">
        <mx:TabNavigator width="100%" height="100%">

            <view:RaviReport id = "raviReport" label="Ravi Report"/>
        </mx:TabNavigator>
</mx:Canvas>   



**RaviReport.MXML:**


<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:view="com.sp.cpem.view.*" width="100%" height="100%" creationComplete="loadPage();">
    <mx:RemoteObject id="pageService" destination="pageService" result="handlePageResult(event)"  fault="handleFault(event)" showBusyCursor="true" />
    <mx:RemoteObject id="loaderService" destination="reportService" result="handleLoadResult(event)"  fault="handleFault(event)" showBusyCursor="true" />   

    <mx:Script>
        <![CDATA[
            import com.sp.cpem.vo.StarsStdValues;
        import mx.managers.CursorManager;
        import com.as3xls.xls.Sheet;
        import com.as3xls.xls.ExcelFile;
        import mx.rpc.events.ResultEvent;                                         
        import mx.rpc.events.FaultEvent;
        import mx.collections.ArrayCollection;    
        import flash.net.FileReference;
        import mx.controls.Alert;

        private var pageArray:ArrayCollection = new ArrayCollection();
        private var fileReference:FileReference;
        private var sheet:Sheet;

        [Bindable]
        private var reportDG:ArrayCollection = new ArrayCollection();
        [Bindable]
        private var assetDP:ArrayCollection = new ArrayCollection();
        [Bindable]
        private var locationDP:ArrayCollection = new ArrayCollection();
        [Bindable]
        private var fields:Array = new Array();  
        [Bindable]                               
        public var abcpRecords:int = 0;

        public var d:Date = null;

        import flash.external.*;

        private function exportToExcel():void{
            if(fromDate.selectedDate == null || toDate.selectedDate == null || asset.selectedItem == null || location.selectedItem == null )
                    Alert.show("Please input '*' required fields.","Information", Alert.OK, null, null, null, Alert.OK);                
            else{
                var s:String;
                var locStr:String;
                d = DateField.stringToDate(toDate.text, toDate.formatString);               
                d.hours = 23;
                d.minutes = 59;
                d.seconds = 59;
                d.milliseconds = 999;
                locStr='';
                //var myArray:Array = new Array(10);                
                var myArray:Array = location.selectedItems;             
                var obj:StarsStdValues;
                for (var i:uint; i < myArray.length; i++) {
                    obj = myArray[i];                   
                    if(i==0)
                        locStr = obj.value;
                    else
                        locStr = locStr+","+obj.value;
                }                           
                if (ExternalInterface.available) {
                    var formatter : DateFormatter;
                    formatter = new DateFormatter();
                    formatter.formatString = "DD.MMMM.YYYY KK:NN:SS A";
                    var jsFunction:String = "toABCPExcel";                      
                    s = ExternalInterface.call(jsFunction,formatter.format(fromDate.selectedDate),formatter.format(d),locStr);
                } else {
                    s = "JS not available";
                }
            }
        }

        /* We are using JSP to create report not FLEX due to 255 char limit issue
        private function exportToExcel1():void
        {   
            sheet = new Sheet();
            var dataProviderCollection:ArrayCollection = dataGrid.dataProvider as ArrayCollection;
            var rowCount:int =  dataProviderCollection.length;
            var columns:Array = dataGrid.columns;
            var colCount:int =columns.length; 
            sheet.resize(rowCount+4,colCount);
            var i:int = 0;  
            for each (var field:DataGridColumn in columns){
                fields.push(field.dataField.toString());                
                sheet.setCell(0,i,field.headerText.toString());  
                i++;  
            }

            for(var r:int=0;r<rowCount;r++)
            {
                var record:Object = dataProviderCollection.getItemAt(r);
                /*insert record starting from row no 2 else 
                    headers will be overwritten* /
                insertRecordInSheet(r+1,sheet,record);
            }
            var xls:ExcelFile = new ExcelFile();
            xls.sheets.addItem(sheet);

            var bytes:ByteArray = xls.saveToByteArray();
            var fr:FileReference = new FileReference();      
            fr.save(bytes,"LOCExposureReport.xls");            

        }
        private function insertRecordInSheet(row:int,sheet:Sheet, record:Object):void
        {                   
            var i:int = 0;  
            for each(var field:String in fields){  
                if(record[field] == null){
                    //Do nothing if its null        
                }else{                              
                    sheet.setCell(row,i,record[field].toString());                    
               } 
               i++;
            }
            //Alert.show(record["comments"].toString(),"Information", Alert.OK, null, null, null, Alert.OK);            
        }*/

            public function loadPage():void {               
                pageService.getDP("ABCPReport");        
            }
            private function handlePageResult(ev:ResultEvent):void {
                 pageArray = ev.result as ArrayCollection;               
                 assetDP =pageArray[0] as ArrayCollection;
                 locationDP =pageArray[1] as ArrayCollection;
                 asset.selectedIndex = 0;
                 location.selectedIndex = 0;

            }

                public function getReport():void {
                //Alert.show(toDate.value.toString(),"Information", Alert.OK, null, null, null, Alert.OK);
                d = DateField.stringToDate(toDate.text, toDate.formatString);               
                d.hours = 23;
                d.minutes = 59;
                d.seconds = 59;
                d.milliseconds = 999;
                //toDate.selectedDate = d;              
                //toDate.selectedDate = DateField.dateToString(d, toDate.formatString);             

                if(fromDate.selectedDate == null || toDate.selectedDate == null || asset.selectedItem == null || location.selectedItem == null )
                    Alert.show("Please input '*' required fields.","Information", Alert.OK, null, null, null, Alert.OK);                
                else                            
                    loaderService.getReport(asset.selectedItems,fromDate.selectedDate,d,location.selectedItems); //toDate.selectedDate                  
            }

            private function handleLoadResult(ev:ResultEvent):void {
                 reportDG = ev.result as ArrayCollection;
                 abcpRecords = reportDG.length;
                 this.label = "ABCP Exposure Report (" +abcpRecords +")";    
            }

            private function handleFault(ev:FaultEvent):void {                
                Alert.show("Error: " + ev.fault.faultCode + " - " + ev.fault.faultDetail + " - " + ev.fault.faultString,"Information", Alert.OK, null, null, null, Alert.OK);   
            }   

            private function dateFunc( item:Object, column:DataGridColumn):String
            {
                return formatDate.format(item[column.dataField]);
            }

            //NUMERIC SORTING obj1[fieldName] sortCompareFunction="sortNumeric" 
            private function sortMaturityDate(obj1:Object, obj2:Object):int {
                var value1:Date = (obj1.strmaturityDate =='' || obj1.strmaturityDate == null) ? null : new Date(obj1.strmaturityDate);
                var value2:Date = (obj2.strmaturityDate == '' || obj2.strmaturityDate == null) ? null : new Date(obj2.strmaturityDate);
                if (value1 < value2) {
                    return -1;
                } else if (value1 > value2) {
                    return 1;
                } else {
                    return 0;
                }
            }
        ]]> 

    </mx:Script>
    <mx:DateFormatter id="formatDate" formatString ="D-MMM-YYYY"/>  
    <mx:VDividedBox width="100%" height="100%">
            <mx:HBox height="15%" width="100%">
                <mx:FormItem label="Location:" required="true">
                    <mx:List id="location" dataProvider="{locationDP}" labelField="value" allowMultipleSelection="true" rowCount="4"/>              
                </mx:FormItem>
                <mx:FormItem label="Asset Type:" required="true">
                    <mx:List id="asset" dataProvider="{assetDP}" labelField="value" allowMultipleSelection="true" rowCount="4"/>                    
                </mx:FormItem>

                <mx:FormItem label="From Date:" required="true">
                    <mx:DateField id="fromDate" yearNavigationEnabled="true"/>       
                </mx:FormItem>
                <mx:FormItem label="To Date:" required="true">      
                    <mx:DateField id="toDate" yearNavigationEnabled="true"/>         
                </mx:FormItem>
                <mx:Button label="Submit" click="getReport()" toolTip="Exposure Report." />
                <mx:Button label="Save To Excel" click="exportToExcel();"/>                                 
        </mx:HBox>
        <mx:VBox height="85%" width="100%">     
            <mx:DataGrid id="dataGrid" height="100%" width="100%" dataProvider="{reportDG}" horizontalScrollPolicy="on">               
                <mx:columns>
                    <mx:DataGridColumn dataField="alertId" headerText="Alert ID" showDataTips="true" dataTipField="alertId"/>


                </mx:columns>
            </mx:DataGrid>
        </mx:VBox>
    </mx:VDividedBox>
</mx:Canvas>