2

最近、カテゴリ/サブカテゴリの表示に関する煎茶アプリを開発しました。メインカテゴリは表示されましたが、カテゴリをクリックしてもサブカテゴリは表示されませんでした。

私の店は--

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":[{"categories_id":"1","categories_name":"ハードウェア","subcategories":[{"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": "メモリ"},{"categories_id":"17","categories_name":"CDROM ドライブ"}]},{"categories_id":"2","categories_name":"Software","subcategories":[{"categories_id":"18","categories_name":"Simulation"},{"categories_id ":"19","categories_name":"Action"},{"categories_id":"20","categories_name":"Strategy"}]},{"categories_id":"3","categories_name":"DVD映画","サブカテゴリ":[{"categories_id":"10","categories_name":"Action"},{"categories_id":"11","categories_name":"SF"},{"categories_id": "12","categories_name":"コメディー"},{"categories_id":"13","categories_name":"漫画"},{"categories_id":"14","categories_name":"スリラー"},{"categories_id":"15","categories_name":"ドラマ"}]}] }

メインカテゴリの下にサブカテゴリを表示するにはどうすればよいですか。

4

2 に答える 2

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 のリスナーを追加してから、サブカテゴリを取得し、次のいずれかを行う必要があります
。 - サブカテゴリ配列を使用して元のストアを手動で再読み込みします。これでリストが更新されますが、元のストアが失われ、カード アニメーションが表示されなくなります。
-サブカテゴリを手動でリロードする 2 番目のリスト/ストアを設定します。これにより、カードのアニメーションを変更し、戻るナビゲーションのために元のストアを維持できます。

于 2012-12-05T05:57:33.980 に答える
0
  1. ストアにストア ID を付与する

2.パラメータcategory_nameを渡し、親ディレクトリがcategories_nameであるサブカテゴリを選択します success: function (response) {

searchresponse2 = Ext.JSON.decode(response.responseText);// サーバーからの応答を取得

//searchresponse2 は、最初の結果を配列 index[0] に格納する配列です。

searchresponse2=searchresponse2[0];

var categoryid=searchresponse2.categories;//最初の値を取得"categories_id":"1","categories_name":"Hardware"

         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').add({categories:del_categoriesid[j],categories_name:del_categoriesname[j]}); }// 結果の値をストアに追加

于 2014-07-24T20:43:46.030 に答える