2012-11-09 195 views
2

我最近開發了一個關於顯示類別/子類別的sencha應用程序。它顯示主要類別,但不會在單擊任何類別時顯示子類別。在sencha中顯示類別/子類別

我的店is--

Ext.define('listdemo.store.Sections', { 
extend : 'Ext.data.Store', 

config : { 
    autoLoad: true, 
    model: 'listdemo.model.Sections', 

    proxy:{ 
     type : 'ajax', 
     url:'http://localhost/catt.php', 

     reader:{ 
        type:'json', 
        rootProperty:'categories'  
       } 

    } 
} 
}); 

型號代碼------

Ext.define('listdemo.model.Sections', { 
extend: 'Ext.data.Model', 

config: { 
    fields: ['categories_id', 'categories_name','subcategories'], 


} 
}); 

而且觀點是----

Ext.define('listdemo.view.Main',{ 
     extend: 'Ext.NestedList', 
     xtype:'main', 
     requires: [ 
      'Ext.TitleBar', 
      'Ext.dataview.List', 
      'Ext.data.Store', 
      'Ext.dataview.NestedList' 
     ], 

     config:{ 
      title: 'Categories', 
      //store:'Sections', 
      items:[ 
      { 
       xtype:'list', 
       itemTpl:'{categories_name}', 
       title:'Categories', 
       store:'Sections', 

      } 
     ] 
    } 
}); 

我的PHP文件回報----

{ 「類別」:[{ 「categories_id」: 「1」, 「categories_name」: 「硬件」, 「子類別」:[{ 「categories_id」: 「4」, 「categories_name」: 「圖形 卡」},{ 「categories_id」: 「5」, 「categories_name」: 「打印機」},{ 「categories_id」: 「6」, 「categories_name」: 「監視器」},{ 「categories_id」: 「7」, 「categories_name」:「揚聲器「},{」 categories_id 「:」 8" , 「categories_name」: 「鍵盤」},{ 「categories_id」: 「9」, 「categories_name」: 「小鼠」},{ 「categories_id」: 「16」,「categories_name 「:」Memory「},{」categories_id「:」17「,」categories_name「:」CDROM Drives「}]},{」categories_id「:」2「,」categories_name「:」Software「,」subcategories「 [{ 「categories_id」: 「18」, 「categories_name」: 「模擬」},{ 「categories_id」: 「19」, 「categories_name」: 「動作」},{ 「categories_id」: 「20」, 「categories_name」: 「策略」}}},{「categories_id」:「3」,「categories_name」:「DVD 電影」,「子類別」:[{「categories_id」:「10」,「categories_name」:「Action」}, 「categories_id」: 「11」,「categories_n AME 「:」 科學 虛構 「},{」 categories_id 「:」 12" , 「categories_name」: 「喜劇」},{ 「categories_id」: 「13」, 「categories_name」: 「卡通」},{ 「categories_id」 :「14」,「categories_name」:「Thriller」},{「categories_id」:「15」,「categories_name」:「Drama」}]}]}

我將如何顯示子類別在主要類別下。

回答

0

您需要更新模型定義以包含字段類型,並註冊要用於子類別的自定義數據類型。

開始由模型加載之前,包括這樣的:

Ext.data.Types.ARRAY = { 
    type: 'Array' 
}; 

下一次更新你的模型,看起來像這樣:

Ext.define('listdemo.model.Sections', { 
    extend: 'Ext.data.Model', 
    config: { 
     fields: [{ 
      name: 'categories_id', 
      type: 'int' 
     },{ 
      name: 'categories_name', 
      type: 'string' 
     },{ 
      name: 'subcategories' 
      type: Ext.data.Types.ARRAY 
     }] 
    } 
}); 

現在,一旦你的存儲加載,手動通過Web控制檯檢查記錄以確保保存子類別的數組。您需要在列表中添加itemtap的偵聽器,然後獲取子類別,然後執行以下任一操作:
使用子類別數組手動加載原始存儲。這應該刷新列表,但是您將失去原始商店,並且不會有任何卡片動畫。
- 設置第二個列表/商店,將手動重新加載子類別,這將允許更改卡片動畫並保持原始商店的後退導航。

0
  1. 給你的店店鋪ID

2。傳遞參數categories_name和選擇其父目錄是categories_name子類別 成功:功能(響應) {

searchresponse2 = Ext.JSON.decode(response.responseText); //獲取從服務器響應

// searchresponse2是存儲數組索引[0]中第一個結果的數組。

變種categoriesid = searchresponse2.categories; //獲取第一 值 「categories_id」: 「1」, 「categories_name」: 「硬件」

  var categoriesname=searchresponse2.categories_name; 

       del_categoriesid=[];//declaring array 
       del_categoriesname=[]; 

      for(var i= 0;i<searchresponse2.length;i++) 
       { 
        del_categoriesid[i]=searchresponse2[i].categories; 
        del_categoriesname[i]=searchresponse2[i].categories_name; 
       }// looping through all values 


       for(var j= 0;j < searchresponse2.length;j++) 
       { 

Ext.getStore( 'STOREID')添加(。 {categories:del_categoriesid [j],categories_name:del_categoriesname [j]}); } //在商店中添加結果的值