2011-03-30 50 views
0

我有幾個嵌套菜單收音機組,我想知道如何從父菜單中取消選中嵌套的菜單組?ExtJS菜單組,如何用遠程按鈕取消選擇

例如,我有一個Ext.menu.Menu對象,其中添加了一個具有另一個Ext.menu.Menu對象菜單的項目。這些都是分開的組。我希望能夠點擊另一個按鈕來取消選中這兩個組。

我的情況是,我有這些嵌套選項可用,並取消選擇按鈕,我想重置選項。

我正在使用ExtJS版本3.3.1。

這些選項是動態生成的,多個項目共享同一個組。它們按照嵌套深度分組。

示例菜單: 無 測試>還在測試>更多測試 再次測試>繼續測試 另一個測試

所以沒有,測試,測試再次,和另一個測試是在基團「1級」 靜止測試,繼續測試在組「level2」中 更多測試在組「level3」中。

我希望無按鈕取消選中2級和3級。我很滿意它正在檢查level1組。

回答

0

您可以嘗試將偵聽器添加到您的按鈕中,並結合Menu類中的cascade函數。 cascade按照容器/組件層次結構的方式工作,這看起來就像你想要嵌套菜單的行爲。

button.addListener("click", function() { 
    topMenu.cascade(function() { 
     //'this' refers to the current component as we cascade down. 
     //check this components xtype 
     if (this.getXType() === "menu") { 
      //do the work you want to do 
     } 
    }); 
}); 

沒有看到任何代碼,很難解釋比這更進一步。

0

好像你可以遞歸地瀏覽菜單,隨時取消選中菜單項。

喜歡的東西:

checkitem.on('checked', uncheckOthers); 

uncheckOthers = function(checkItem) { 
    var menu = checkItem.ownerCt; 
    uncheckMenu(menu, checkItem); 
} 

uncheckMenu = function(menu, leaveItemAlone) { 
    menu.items.each(function(item) { 
     if (item !== leaveItemAlone && item.setChecked) { 
      item.setChecked(false); 
     } 
     if (item.menu) { 
      uncheckMenu(item.menu); 
     } 
    } 
}