1

データビューからインデックス値を取得できません:

    {          
              xtype: 'list', 
              itemId: 'catList',
              store: 'CategoryStore',    

             scrollable: false,
              layout: 'fit',          
              itemHeight: 20,
              itemTpl: [
              '<div>',
              '<tpl for="data">',
              '<span >{category_name}</span> ',             
          '</tpl>',
          '</div>'],
listeners: {
   'itemtap': function(list, index, target, record, e, eOpts){
     console.log(record.get('cat_id'));
}
}
}

編集: データをストアに静的に配置すると、正常に動作しますが、サーバーからデータを取得している間は動作しません:

リストに表示されているように機能します:

      {    
          xtype: 'list', 
          itemId: 'catList',
          scrollable: false,

    data: [
    { category_name: 'A', cat_id: 1},
    { category_name: 'B', cat_id: 2},
    { category_name: 'C', cat_id: 3},
    { category_name: 'D', cat_id: 4},
    { category_name: 'E', cat_id: 5},


    ],
    loadingText: "Loading Words...",
    emptyText: '<div>{message}</div>',
    autoLoad:true,
    itemTpl:[
    '<tpl for=".">',
          '<span >{category_name}</span> ',             
      '</tpl>',
    ] 
  },

ここで、別の行を何度もタップしましたが、インデックス 0 しか取得できません。これはなぜですか? リスト項目の別の行をタップしても、別のインデックス値を取得できないのはなぜですか?

私のJSON

4

2 に答える 2

0

コードをテストしたところ、問題なく動作したため、コードの何が問題なのかよくわかりません。ただし、いくつかの点が間違っています。

  • 「itemTpl」はすでにデータ配列で反復処理されているため、itemTpl に for ループは必要ありません。「tpl」だけを使用している場合に必要になります。
  • ビューにリスナーが含まれないようにします。代わりに、コントローラーでリストへの参照を取得し、そこにリスナーを設定します。これは悪い習慣であり、NVC パターンに違反します。

これは、私の te4st アプリケーションで動作する小さなバージョンです。

{
    xtype: 'list', 
    itemId: 'catList',
    scrollable: false,
    data: [
        { category_name: 'A', cat_id: 1},
        { category_name: 'B', cat_id: 2},
        { category_name: 'C', cat_id: 3},
        { category_name: 'D', cat_id: 4},
        { category_name: 'E', cat_id: 5},
    ],
    loadingText: "Loading Words...",
    emptyText: '<div>{message}</div>',
    autoLoad:true,
    itemTpl: '{category_name}',   
    listeners: {
        'itemtap': function(list, index, target, record, e, eOpts){
            //TODO: whatever..
        }
    }
}
于 2013-08-14T09:19:15.867 に答える