2012-12-21 54 views
0

標題解釋這一切......如何檢測Kendo UI窗口上的resizeStop事件?

我需要的時候,我知道一個用戶已經完成調整,但是從我可以劍道UI文檔中發現有此訪問任何情況下給我執行自定義操作其他那些我不能使用的「調​​整大小」。

也許我只是錯過了這個事件?

如果不是:

是否有使用「調整」事件,以確定用戶已經停止調整的方法嗎?

+0

我認爲這個問題實際上是定義了什麼意思_stop_調整大小。這是否意味着用戶在一段時間內沒有調整大小?如果是這樣,你可以定義一個'resize'事件處理程序來記錄執行的時間並開始超時。如果新的'resize'事件到達,您重新啓動超時。如果超時過期,那麼你有_stop resizing_事件。 – OnaBai

+0

停止調整大小我將定義爲用戶曾經調整大小並且現在已完成所述操作。 並且上面描述的方法不會像'resize'那樣工作,只有在小部件大小發生更改時纔會調用,這意味着用戶可以單擊以調整小部件的大小,然後不移動光標,該大小不會調整resize事件因此使計時器過早起火。 – Zholen

+0

只是爲了完整性問題,並確保讀者能夠理解這個問題:當您在調整大小的角落點擊**時,'resize'事件**不是''發射'',而是當您移動鼠標時發生**。因此,如果您單擊調整窗口小部件的大小,但不移動窗口,則您沒有調整大小事件。 – OnaBai

回答

1

因此,這裏是我的答案迄今:

礦由於建築需求略有不同,但這裏有一個通用的解決方案

var isResizing = false; 
var wndw = $(element).kendoWindow({ 
       // ..... 
       resize: OnResize, 
       // ..... 
      }).data('kendoWindow'); 

function onResize() { 
    isResizing = true; 
} 

$('body').on('mouseup', '.k-window', function() { 
    if(isResizing){ 
     // **Your 'Stopped' code here** 
     isResizing = false; 
    } 
}); 
+1

我編輯了你的代碼,用於向'k-window'選擇器添加'.'。我做了一些額外的修改,因爲SO不允許只添加'.'作爲版本,在這種情況下'''真的很重要 – OnaBai

0

你有沒有考慮使用underscore.js debounce?我已經成功地使用它,以便在調整大小事件停止一段時間(在300ms以下的情況下)之後才觸發然後改變。這確實增加了一小段延遲來捕捉結束,但如果像我一樣,你只是想存儲最終大小,那麼工作正常。這裏是上面的代碼版本,但使用下劃線去抖動:

var wndw = $(element).kendoWindow({ 
      // ..... 
      resize: _.debounce(this.hasResized, 300) 
      // ..... 
     }).data('kendoWindow'); 

    //This is called at the end of a resize operation (using _.debounce) 
    function hasResized (args) { 
     // ** Your code here ** 
    }; 

希望有所幫助。