2017-08-23 114 views
4

問題

我使用leaflet draw我的應用程序,而我的「刪除」按鈕激活。刪除按鈕有三個選項:確定何時單張繪畫取消按鈕被點擊

  1. 保存
  2. 取消
  3. 全部清除

我想功能foo()如果用戶點擊保存被調用,然而,我想要功能bar()被稱爲應他們點擊取消

Live demo

解決方案

我知道這可以通過簡單地給它一個ID,並添加事件偵聽器來實現,但我認爲它應該是它不是那麼幹淨。

理想的解決方案

傳單得出自己的方法時,按下按鈕檢測,但在我看來,他們只是做了一個水平。例如:

draw:deletestop這是編輯的類型。其中之一:刪除用戶完成刪除形狀(刪除模式)並保存後觸發。

- Leaflet Docs

這允許用戶選擇的三個選項的任意後,渲染他們只是處理完成刪除按鈕的交互我打電話foo()

我無法在文檔中找到一種方法,以便能夠聆聽單張按鈕被按下時觸發事件的傳單。

回答

2

取消/禁用功能的處理程序存儲爲您的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); 
}; 

該處理程序的源here雖然這工作得很好,你必須要小心Leaflet.Draw的未來版本的可能會改變處理程序的功能。

相關問題