2014-05-13 37 views
1

我有一個屏幕分爲2個使用劍道UI拆分器的拆分區域。現在每個分割區域再次分割多次。爲什麼Kendo UI銷燬方法刪除所有子部件?

在一些使用情況下,我想銷燬父分離器但保留其子分離器。

//get the splitter object of kendo 
    var splitter = $splittedDiv.data("kendoSplitter"); 
    splitter.destroy(); 

但是kendo正在遞歸地銷燬它的所有子部件。我們有解決這個問題的方法嗎?

基本上,我也試過使用splitter.remove(),但是這並沒有從分割條中刪除「調整大小」事件,當我嘗試調整所有拆分的小部件時導致問題。

我們是否有任何解決方法可以使用kendo.destroy(),但它只會銷燬該特定的小部件而不觸及其任何子部件。

<div id="container1"> 
<div id="splitA"> 
</div> 
<div id="splitB"> 
    <div id="container2"> 
    <div id="splitC"></div> 
    <div id="splitD"></div> 
    </div> 
</div> 
</div> 


Now init 
$('#container1').kendoSplitter(); 
$('#container2').kendoSplitter(); 

Not destroy 
$('#container1').data("kendoSplitter").destroy(); 

上面的代碼也破壞了#container2拆分區域。爲什麼?

回答

1

這就是銷燬方法的預期行爲。

您可以添加自己的破壞方法,它不叫kendo.destroy()(這是負責銷燬子控件),並調用來代替:

kendo.ui.Splitter.fn.destroyNonRecursive = function() { 
    Widget.fn.destroy.call(this); 

    this._detachEvents(); 

    if (this.resizing) { 
     this.resizing.destroy(); 
    } 
} 
+0

你的答案是完美的只是我們不想打電話fn.destroy()裏面覆蓋的方法。 非常感謝。 :) – Libu

+0

: - 你可以請你詳細說明你的方法,而你可以在劍道中覆蓋任何一個部件的方法。就像你怎麼知道this._detachEvents();叫做? – Libu

+0

閱讀代碼:https://github.com/telerik/kendo-ui-core/blob/master/src/kendo.splitter.js –

相關問題