问题
我正在使用leaflet draw作为我的应用程序,并且我已将“删除”按钮激活.删除按钮有三个选项:
>保存
>取消
>全部清除
我希望在用户单击Save时调用函数foo(),但是,我希望在单击Cancel时调用函数bar().
解
我知道这可以通过简单地给它一个ID,并添加一个事件监听器来实现,但它并不像我认为的那样干净.
理想解决方案
Leaflet绘制了自己的方法,用于检测按钮何时被按下,但在我看来,它们只能在更高的级别上进行.例如:
draw:deletestop
The type of edit this is. One of: remove Triggered when the user has finished removing shapes (remove mode) and saves.– 07002
这允许我在用户选择三个选项中的任何一个后调用foo(),表示他们已经完成了处理删除按钮交互.
我无法在文档中找到一种方法,能够在按下的各个按钮上侦听传单绘制触发事件.
最佳答案
取消/禁用功能的处理程序存储为L.Control.Draw实例的一部分.因此,您可以在实例化L.Control.Draw对象后立即修改处理程序:
var myDrawControl = new L.Control.Draw();
myDrawControl._toolbars.edit.disable = function () {
if (!this.enabled()) {
/* If you need to do something right as the
edit tool is enabled,do it here right
before the return */
return;
}
this._activeMode.handler.revertLayers();
/* If you need to do something when the
cancel button is pressed and the edits
are reverted,do it here. */
L.Toolbar.prototype.disable.call(this);
};