我正在使用jQuery和jQuery UI在Javascript中开发Openlayers工具栏。
我想要实现的一个功能是向地图添加点。
在openLayers中,您必须侦听名为“sketchcomplete”的事件。
layer.events.on({
'sketchcomplete': onPointAdded
});
问题在于onPointAdded回调。此回调应返回true或false。 True表示该点应添加到地图中,false表示取消将此点添加到地图。
现在回调看起来像这样:
onPointAdded = function(feature) {
var f = feature.feature;
var result = false;
$('#dialog-point-add').dialog({
modal : true,
buttons : {
'Add point' : function() {
result = true;
$(this).dialog("close");
},
'Cancel' : function() {
result = false;
$(this).dialog("close");
}
}
});
return result;
};
问题是此对话框不会阻止正在执行的代码。我在问你如何处理这种情况?我想向用户显示对话框并确认添加点。
答案 0 :(得分:1)
如果我正确理解了这个问题,你将无法使用jquery ui对话框执行此操作。香草js确认框应该可以工作。
答案 1 :(得分:0)
该函数无法阻止,因为JavaScript是单线程的,没有其他任何东西可以执行。你为什么不直接添加逻辑,如果函数返回true,你想调用'添加点'回调?
修改强> “普通”JavaScript确认对话框将阻止:
onPointAdded = function(feature) {
return confirm("Sure?");
};