0

dojo/aspect有没有办法用and捕获按键事件aspect.after

我正在使用第三方 Javascript API (ESRI JS API v3.4),它提供了一个用于在地图上绘制图形的小部件。小draw toolbar部件有一个onDrawEnd事件,该事件将绘制的图形对象的形状作为参数提供。我需要确定用户在使用此小部件在地图上绘图时是否按下CTRLSHIFT键,但我使用它aspect.after(drawingToolbar, "onDrawEnd", myhandlerfunction, true)来连接绘图事件。

我知道如何确定是否按下键的唯一方法是使用一个event对象,当使用aspect它时没有提供该对象dojo/on

任何想法如何确定是否在此处按下键?

4

2 回答 2

1

也许你必须采取另一种方式来赶上关键事件。

这就是我在文本框中捕获“Enter”事件的方式。当按下 Enter 键时,将调用函数 zoomToAnlage()。此事件侦听器已在初始阶段加载,这一点很重要。当然,这不是完全解决您的问题,但也许它显示了您如何处理它的方法。

    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();
            }
        });
    });

}

这是 dojo/keys 的链接: http ://dojotoolkit.org/reference-guide/1.8/dojo/keys.html?highlight=keys#id2 问候,Miriam

于 2013-06-24T08:25:30.777 回答
0

dojo.aspect 无法连接到事件,只能连接到函数。但是,您应该能够查看处理该事件的函数,并窃取其参数。

aspect.after(drawingToolbar, "someHandlerFunctionWithTheEventArg", 
    function(args){
      // access the event from the args here
    }, true);
于 2013-06-21T00:53:09.813 回答