2014-09-09 2 views
-1

운송 시스템 응용 프로그램 용 FLEX 프로그래밍 Flash Builder 4.6을 사용하고 있습니다. 아래의 코드는 우리 서버에서 실행될 때 Firefox와 잘 작동하지만, I.E.를 사용할 때 어떤 이유로 인해 작동합니다. 클릭만으로 첫 번째 응답 만 얻고 후속 클릭은 내 I.E를 실행하지 않는 한 내가 필요한 것을 반환하지 않습니다. 디버그 모드에서 11.Flex CallResponder는 초기 클릭에서 작동하지만 I.E 이후에는 작동하지 않습니다.

다음은 수행 할 작업입니다. 사용자가 버스 정류장을 클릭합니다. 클릭 할 수있는 버튼이 있습니다.이 버튼은 HTTP 서비스를 누르고 도착한 다음 네 개의 버스와 시간을 팝업 창으로 반환합니다. 그들은이 팝업 창을 닫을 수 있고 "다음 4 버스 도착 시간을 여기에서 클릭하십시오"를 다시 클릭하면 목록을 새로 고쳐야합니다 (firefox에서는 작동하지만 IE 11에서는 작동하도록 디버깅해야합니다. 그것없이 첫 번째 클릭에 대한 값을 반환하고, 후속 클릭은 이미 목록에있는 것을 계속 보여줍니다.

예, 저는 flex 프로그래밍에 익숙하며 형식에 몇 가지 문제가 있으며 코드를 호출하는 방법에 대해 배우고 있지만 확신합니다. 이것은 일을 보는 것이 흥미 롭습니다. 그러나 저는 여전히이 문제들을 가지고 있습니다. 어떤 아이디어 나 조언도 크게 환영합니다. 나는 충분한 정보를 제공하려고 노력했지만 많은 경우 미안합니다. 어떻게 든 CallResponder로 문제를 생각하고 있습니다. 사전에 도움을 주셔서 감사합니다. I.E.에서 캐싱을 한 것 같은데? 나는 바이올린을 실행했고 처음 요청은 끝났음을 보여 주지만 다시 클릭하면 요청을 보내지 않습니다.

<esri:infoWindowRenderer> 
       <fx:Component> 
        <esri:LabelDataRenderer label="Bus Stop on Selected Route"> 
         <fx:Script> 
          <![CDATA[         
           import flash.events.*; 
           import flash.sampler.NewObjectSample; 

           import mx.collections.ArrayCollection; 
           import mx.controls.Alert; 
           import mx.controls.List; 
           import mx.controls.Text; 
           import mx.events.CloseEvent; 
           import mx.events.FlexEvent; 
           import mx.managers.PopUpManager; 

           import spark.components.Button; 
           import spark.components.TitleWindow; 

           protected function clickHandler(event:MouseEvent):void { 
            var busStopLink:String = "http://rtcws.rtcsnv.com/mobile/geoRoutes.cfm?bsid="; 
            var stopNumber:String = data.stopNumber; 
            var urlString:String = busStopLink + stopNumber; 
            var urlReq:URLRequest = new URLRequest(urlString); 
            navigateToURL(urlReq, "_blank"); 
           } 

           public var myTitleWindow:TitleWindow = new TitleWindow(); 

           public function initApp():void { 
            showBusTimesButton.addEventListener(MouseEvent.CLICK, showBusTimes_clickHandler); 
           } 

           public function showBusTimes_clickHandler(event:Event):void { 
            var busEndpoint:String = "/rtcTimes/" + data.stopNumber; 
            fetchBusTimesResult.token = busTimes.fetchBusTimes(busEndpoint); 
            myTitleWindow = new TitleWindow(); 
            myTitleWindow.title = "Next 4 Bus Arrival Times for Stop: " + data.stopNumber; 
            populateWindow(); 
            PopUpManager.addPopUp(myTitleWindow, this, true); 
            PopUpManager.centerPopUp(myTitleWindow); 
            myTitleWindow.addEventListener(CloseEvent.CLOSE, closeTitleWindow); 
           } 

           public function populateWindow():void { 
            myTitleWindow.addElement(dataGrid); 
           } 

           public function closeTitleWindow(event:CloseEvent):void { 
            PopUpManager.removePopUp(myTitleWindow); 
           } 
          ]]>                                
         </fx:Script> 
         <fx:Declarations> 
          <s:CallResponder id="fetchBusTimesResult"/> 
          <bustimes:BusTimes id="busTimes" 
               fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" 
               showBusyCursor="true"/> 
          <s:DataGrid id="dataGrid" dataProvider="{fetchBusTimesResult.lastResult}" sortableColumns="false" 
             requestedRowCount="4"> 
           <s:columns> 
            <s:ArrayList> 
             <s:GridColumn dataField="ROUTE" headerText="Route" resizable="false"></s:GridColumn> 
             <s:GridColumn dataField="ARRIVAL" headerText="Arrival Time" resizable="false"></s:GridColumn> 
             <s:GridColumn dataField="DIR" headerText="Direction" resizable="false"></s:GridColumn> 
            </s:ArrayList> 
           </s:columns> 
           <s:typicalItem> 
            <fx:Object ARRIVAL="ARRIVAL_TIME" ROUTE="ROUTE1" DIR="DIRECTION"></fx:Object> 
           </s:typicalItem> 
           <!--<s:AsyncListView list="{fetchBusTimesResult.lastResult}"/>--> 
          </s:DataGrid> 
         </fx:Declarations> 
         <s:VGroup paddingBottom="5" 
            paddingLeft="5" 
            paddingRight="5" 
            paddingTop="5" 
            creationComplete="initApp();"> 
          <s:Label text="Stop Number: {data.stopNumber}"/> 
          <s:Label text="Stop Name: {data.Stopname}"/> 
          <s:Label text="Route(s) Served: {data.routesServed}" /> 
          <s:Button id="showBusTimesButton" label="Click Here for Next 4 Bus Arrival Times"/> 

         </s:VGroup> 
        </esri:LabelDataRenderer> 
       </fx:Component> 
      </esri:infoWindowRenderer>  

답변

0

이것은 일을하는 다소 복잡한 방식이며 의도적인지 확실하지 않습니다.

      public function populateWindow():void { 
           myTitleWindow.addElement(dataGrid); 
          } 

왜 새 MXML 구성 요소, MyTitleWindow를 만들 캔트, 그 제목 창에서 MXML 마크 업의 모든, 그리고 호출 클래스를 같은 것을 할 넣어 :

는 왜 이러는거야?

var busEndpoint : String = "/ rtcTimes /"+ data.stopNumber;

       myTitleWindow = new MyTitleWindow(); 
           myTitleWindow.title = "Next 4 Bus Arrival Times for Stop: " + data.stopNumber; 

그리고 당신의 MyTitleWindow의의 creationComplete에서

fetchBusTimesResult.token = busTimes.fetchBusTimes (busEndpoint);

+0

왜 (dataGrid)를 추가 했습니까? 나는 요소 (dataGrid)를 추가하지 않으면 팝업창에 나타나지 않는다고 생각했다.Flex 프로그래밍에 익숙하지 않아서 고마워,이 모든게 내게 완전히 새로운 것이다. 그래, 나는 틀린 길과 정직한 방법으로 일을하고 있다고 확신한다. 모든 의견에 감사 드리며 귀하의 제안을 확실히 조사 할 것입니다. 이제이 캐싱 문제를 파악할 수 있습니다. 내 HTML 파일에 가서 다음 메타 http-equiv 태그를 "CACHE-CONTROL"CONTENT = "NO-STORE"로 변경했지만 도움이되지 않았습니다. 아마도 나는 어딘가에서 뭔가를 놓치고있다. – Johnny

0

오케이, callResponder 문제가 아니며 I.E에서 캐싱 문제였습니다. I.E에서만 캐싱 문제를 발견했습니다. 검색 기록 -> 인터넷 옵션 -> 일반 -> 설정으로 이동하고 "웹 페이지를 방문 할 때마다"설정을 켜면 버튼을 클릭하여 다음 4 회의 중지 시간을 얻습니다. 피 들러를 사용하여 계속해서 클릭 할 수 있으며 요청을 항상 보냅니다. 이전에 비해 하나만 보내고 그 결과를 캐싱합니다. 따라서 디버깅 모드에서 디버깅 모드에 있었기 때문에 새 웹 페이지를 요청한 후 정상 모드로 다시 전환했을 때 작동하지 않는 이유는 무엇입니까? 사용자가이 옵션을 켜야하고 대중에게이 작업을 수행하도록 요청해야하므로 절대적인 대답인지 여부는 확실하지 않습니다.하지만 해결 방법은 매우 어렵습니다. 나는 "pragma" "no-cache"와 "cache-control" "no-store"와 "Expires" "-1"을 포함하도록 메타 태그를 수정하려고 시도했지만 그 중 아무 것도이 문제를 도왔습니다. 일부는 명시된대로 태그 뒤에 태그를 추가하고 페이지를 업데이트하지 않고 요청을 보냅니다. 누구든지 다른 아이디어가 있다면 나는 그들에게 개방적이지만, 당분간이 해결책은 그저 잠깐이지만 작동합니다.