0

私は煎茶タッチの初心者で、アプリを使用しています。以下のjson応答の例に示すように、json応答を取得しているようなシナリオがあります。メニュー項目をリストのヘッダーとして表示し、サブメニュー項目をリストのコンテンツとして表示したいと考えています。

ここに私のjson応答があります:

{
   "menuname": "menu",
   "menugroup": 0,
   "submenuitems":
   [
       {
           "menuname": "Time",
           "menugroup": 0,
           "submenuitems":
           [
               {
                   "menuname": "Time1",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               },
               {
                   "menuname": "Time2",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               },
               {
                   "menuname": "Time3",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               }
           ]
       },
       {
           "menuname": "Date",
           "menugroup": 0,
           "submenuitems":
           [
               {
                   "menuname": "Date1",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               }
           ]
       },
       {
           "menuname": "Month",
           "menugroup": 0,
           "submenuitems":
           [
               {
                   "menuname": "Month1",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               },
               {
                   "menuname": "Month2",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               },

               {
                   "menuname": "Month3",
                   "menugroup": 1,
                   "submenuitems":
                   [
                   ]
               }
           ]
       },
       {
           "menuname": "Year",
           "menugroup": 0,
           "submenuitems":
           [
           ]
       }
   ]
}

リストは次のようになります。

  • タイムヘッダー
    • 時間1
    • 時間2
    • 時間3
  • 日付 - ヘッダー
    • 日付1
  • 月 - ヘッダー
    • 月1
    • 月2
    • 月3
  • 年 - ヘッダー

どうか、sencha touchでこれを行う方法を学ぶのを手伝ってくれる人はいますか?

4

2 に答える 2

0

これをインタラクティブなリストとして表示したい場合は、ネストされたリストを見る必要があります

これを順序付けされていないリストとして表示したい場合は、record.rawこのデータをロードした後にアクセスし、それを繰り返し処理して必要な html を生成できます。ループの後panel.setHtml(yourHtml)、必要なパネルに表示することができます。

于 2013-03-04T13:55:11.930 に答える
0

json アプリの受信を制御できる場合にのみ、これを行う簡単な方法があります。json を次の形式に変更できれば、これを必要な表示に簡単に配置できます。

jsonは-

       menuItems : [
            {
                 menuname: "Time",
                 subitem: "some time 1"
            },
            {
                 menuname: "Time",
                 subitem: "some time 2"
            },
            {
                 menuname: "Date", 
                 subitem: "some date 1"
            },
            {
                 menuname: "Date", 
                 subitem: "some date 2"
            }
        ]

上記のjsonを使用すると、次のようなモデルを作成できます-

    var model = Ext.define('SomeModel',{
        extend: 'Ext.data.Model',
        fields: ['menuname','subitem']
    });

次に、json を読み取るストアを定義できます。特定の値に一致するものgrouperをグループ化するには、このストアに申請する必要があります。menuitems

    var store = Ext.create("Ext.data.Store", {
        model: model,
        data : [
            {menuname: "Time", subitem: "some time 1"},
            {menuname: "Time", subitem: "some time 2"},
            {menuname: "Date", subitem: "some date 1"},
            {menuname: "Date", subitem: "some date 2"}
        ],
        groupField:'menuname',
        grouper: {
            groupFn: function(record) {
                return  record.get('menuname');
            }
        }
    });

これにより、リスト ヘッダーを親メニュー項目として表示するためのマークアップを自動的に生成できます。そして、すべてのサブアイテムはリスト アイテムとして分類されます。この後、ストアをリストに適用するだけです。

    var list = Ext.create("Ext.List", {
        styleHtmlContent:true,
        fullscreen: true,
        store: store,
        grouped: true,
        itemTpl: "{subitem}"
    });

NestedListの使用を検討することもできます。これにより、メニュー項目の明確な分類機能が提供されます。ただし、json を変更する権利を保持していない場合は、クレイジーなロジックが必要になります。達成したいことは非常に簡単ですが、これを行うことは、与えられた json では困難です。可能であれば、json の変更を検討してください。

PS。あなたが言及したjsonはgroupno、すべてのアイテムで同じです。これは正しいです ?

于 2013-03-04T11:04:25.077 に答える