有没有办法使用dojo/aspect
和aspect.after
来捕捉关键新闻事件?
我正在使用第三方Javascript API(ESRI JS API v3.4),它提供了一个用于在地图上绘制图形的小部件。 draw toolbar
窗口小部件有一个onDrawEnd
事件,它将绘制的图形对象的形状作为参数提供。我需要确定用户是否在使用此窗口小部件在地图上绘图时按下CTRL
或SHIFT
键,但我使用aspect.after(drawingToolbar, "onDrawEnd", myhandlerfunction, true)
来连接绘图事件。
我知道如何确定是否按下某个键的唯一方法是使用event
对象,使用aspect
与dojo/on
时使用的对象不提供。
如何确定我是否可以确定是否按下此键?
答案 0 :(得分:1)
也许你们会采取另一种方式来赶上一个关键事件。
这就是我在文本框中捕获“Enter”-Event的方式。当按下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 此致,Miriam
答案 1 :(得分:0)
dojo.aspect无法连接到事件,只能连接到函数。但是,您应该能够处理正在处理该事件的函数,并窃取它的args。
aspect.after(drawingToolbar, "someHandlerFunctionWithTheEventArg",
function(args){
// access the event from the args here
}, true);