2013-06-20 22 views
0

有沒有一種方法來捕獲一個按鍵事件dojo/aspectaspect.after道場方面和按鍵

我正在使用第三方Javascript API(ESRI JS API v3.4),它提供了一個在地圖上繪製圖形的小部件。 draw toolbar小部件具有onDrawEnd事件,該事件將繪製的圖形對象的形狀作爲參數提供。我需要確定用戶在使用此小部件繪製地圖時是按了CTRL還是SHIFT鍵,但我使用aspect.after(drawingToolbar, "onDrawEnd", myhandlerfunction, true)來連接繪圖事件。

我知道如何確定是否有鍵按下時是通過使用event對象,使用aspect時喜歡它是dojo/on不設置的唯一途徑。

任何想法如何確定一個鍵是否被按下?

回答

1

也許你是另一種方式來追上關鍵事件。

這就是我如何捕捉文本框中的「Enter」事件。當輸入鍵被擊中時,函數zoomToAnlage()被調用。這個事件監聽器已經在ini階段加載很重要。 當然,這不是您的問題的完全解決方案,但也許它顯示瞭如何處理它的方式。

function initKielAnlagenNummernSuchen(){ 

    queryTaskAnlagenNummern = new esri.tasks.QueryTask(restServicesLocation + NameSearchService + "/MapServer/23"); 

    queryallAnlagenNummern = new esri.tasks.Query(); 
    queryallAnlagenNummern.returnGeometry = true; 
    queryallAnlagenNummern.outFields = ["ANLAGE"]; 

    require(["dojo/keys","dojo/dom","dojo/on"], function(keys, dom, on){ 
     on(dom.byId("selectAnlagenNummer"), "keypress", function(evt){ 
      var charOrCode = evt.charCode || evt.keyCode; 
      if (charOrCode == keys.ENTER) { 
       zoomToAnlage(); 
      } 
     }); 
    }); 

}

下面就來道場/密鑰的鏈接:http://dojotoolkit.org/reference-guide/1.8/dojo/keys.html?highlight=keys#id2 問候,楊千嬅

0

dojo.aspect無法連接到事件,只有函數。但是,你應該能夠處理一個處理該事件的函數,並竊取它的參數。

aspect.after(drawingToolbar, "someHandlerFunctionWithTheEventArg", 
    function(args){ 
     // access the event from the args here 
    }, true); 
+0

謝謝您的回答。我給了它一個鏡頭,但它沒有奏效。如果我在'aspect.after'中使用'receiveArguments = true',則會返回一個對象,該對象表示在地圖上繪製的圖形。如果我不添加'receiveArguments'參數,我得到一個只包含單個對象的參數數組。我開始認爲我應該連接到我的地圖的'KeyPress'事件,同時連接到'onDrawEnd'。 – Brian