2

我已經通過引用此鏈接實施了手風琴名單。 http://docs.kawanoshinobu.com/touch/#!/api/Ext.ux.AccordionList。手風琴工作正常,沒有任何問題。我只需要在手風琴列表標題上搜索文字。搜索後,一旦得到手風琴標題。應該是,我能夠展開和摺疊這些標題需要看到標題的子項目。我已經應用商店過濾器,它被過濾的商店和顯示過濾的數據(參考圖像)。擴展和崩潰正在發生在標題右和下圖標正在改變。但不能在擴展模式下看到特定報頭的子節點數據。子節點可用於該頭(在console.log()中可見)。 有沒有其他方法可以爲手風琴表/樹木商店應用過濾器?非常感謝。謝謝。在上面的鏈接本身我已經應用商店過濾它的行爲相同,我面臨的問題在我的代碼上。在下面的代碼中,我將過濾文本'傳遞給'。它今天過濾,非常好。 但點擊展開子節點時不可見。存儲過濾器展開和摺疊後,AccordionList中沒有顯示子數據?

Before store filter After store filter 代碼是在這裏:

var data = { 
    "items" : [{ 
      "text" : "Today", 
      "items" : [{ 
         "text" : "Eat", 
         "leaf" : true 
        }, { 
         "text" : "Sleep", 
         "leaf" : true 
        }, { 
         "text" : "Drinking", 
         "leaf" : true 
        }] 
     }, { 
      "text" : "Tomorrow", 
      "items" : [{ 
         "text" : "Watch TV", 
         "leaf" : true 
        }, { 
         "text" : "Watch Video", 
         "leaf" : true 
        }] 
     }, { 
      "text" : "This week", 
      "items" : [{ 
         "text" : "Shopping", 
         "leaf" : true 
        }] 
     }, { 
      "text" : "Later", 
      "items" : [{ 
         "text" : "Eat", 
         "leaf" : true 
        }, { 
         "text" : "Sleep", 
         "leaf" : true 
        }, { 
         "text" : "Drinking", 
         "leaf" : true 
        }] 
     }] 
}; 

Ext.define('Task', { 
    extend: 'Ext.data.Model', 
    config: { 
     fields: [{ 
      name: 'text', 
      type: 'string' 
     }] 
    } 
}); 

var store = Ext.create('Ext.data.TreeStore', { 
    model: 'Task', 
    defaultRootProperty: 'items', 
    root: data 
});  


store.filter([{ 
        property: "text", 
        value: "to", 
        anyMatch: true    
       }]); 


var accordionList = Ext.create('Ext.ux.AccordionList', { 
    fullscreen: true, 
    store: store 
}); 

回答

-1

我已經achived。 store.filter函數,很好地過濾文本,但如果它有子節點也不會顯示。因爲我們已經在商店搜索了一些特定的文字。過濾器僅顯示那些過濾器文本後。我走了另一條路。它按照我的要求工作得非常好。我打電話給web服務store.load()。 在商店中搜索輸入的文字。如果輸入的文本在父級別不可用,則從商店中刪除特定項目。迭代後,最終商店分配給手風琴表。手風琴列表顯示相關的搜索文本數據。歡呼:)。下面是代碼。謝謝。

store.getProxy().setUrl('resources/Json/TestsStore.json');   
      store.load({ 
       scope: this, 
       callback: function(records, operation, success) { 
        if (success) { 
          if(searchfield !=="") {         
           if(store.data.items.length !==0){ 
            var length = store.data.items.length; 
            for(var j=length; j--;) { 
            if(store.data.items[j].data.name.search(new RegExp(searchfield, "i")) ===-1){ 
             store.data.items[j].remove(); 
            } 
           } 
           } 
          } 
         if(store.data.items.length ===0){ 
          eGMonitorApp.util.Utility.showAlert('Searched text not available.','Tests'); 
         }      
         this.getAccordionListRef().setStore(store); 
        } 
       } 
      }); 
+0

什麼是「name」in if(store.data.items [j] .data.name.search(new RegExp(searchfield,「i」))=== - 1){store.data。項[j]的一個.remove(); }會很感激你的回覆。 –