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