2012-08-22 91 views
0

我想創建一個事件偵聽器來檢測我的嵌套列表何時位於頂層,然後隱藏頁面上的組件。例如:Sencha Touch 2如何檢測嵌套列表上的頂層

onNestedlistActiveItemChange: function(container, value, oldValue, options) { 
    if (this.getMyNestedList().atLevel(0)) <-- seudo code, does not work 
      { 
      Ext.getCmp('myButton').hide(); 
      } 
    } 

在此先感謝您的幫助

回答

2

嵌套列表的_backButton._hidden屬性將返回true時默認的後退按鈕被隱藏,false時顯示的按鈕。該按鈕僅在嵌套列表位於頂層時隱藏。

的技巧是使用嵌套列表的「後退」事件,這發生後回事件返回工具欄的狀態:

onMynestedlistBack: function(nestedlist, node, lastActiveList, detailCardActive, options){ 
    if(nestedlist._backButton._hidden) { 
     Ext.ComponentQuery.query('#myButton')[0].hide(); 
    } 
} 

也就是說,如果嵌套表的後退按鈕是隱藏,那麼這個清單是在頂層,所以隱藏myButton

確實有更嚴格的方法來做到這一點,但其中大多數都會涉及覆蓋工具欄的默認按鈕處理。

+0

完美!非常感謝你 – Arkady

0

您可以通過檢查列表的索引得到列表級別

var idx = nestedlist.getInnerItems().indexOf(list); 
if (idx === 0) { 
    // top level... 
} 

[更新]

您還可以檢查記錄的深度級別

var depth = record.getData().depth; 
if (depth === 1) { 
    // top level... 
}