0

Sencha Touch 2 プロジェクトでストア (実際にはローカル データを含むストア) を使用してカスタム コンポーネントを生成しようとしています。

私の考えでは、ストア内の要素ごとに 1 つのカスタム コンポーネントを作成することですが、実際には何も起こりません。

いろいろ試してみましたが、うまくいきませんでした。問題を示すために例を示しました。

モデル:

Ext.define('project.model.city', {
  extend: 'Ext.data.Model',
  config: {
    fields: [
      {name: 'country', type: 'string'},
      {name: 'city', type: 'string'}
    ]
  }
});

お店:

Ext.define('project.store.cities', {
  extend: 'Ext.data.Store',
  requires: ['project.model.city'],
  model: 'project.model.city',
  autoLoad: true,
  data: [
    { country: 'Germany', city: 'Berlin' },
    { country: 'Italy', city: 'Rome' }
  ]
});

ストアで表示:

Ext.define('project.view.cityAll', {
  extend: 'Ext.Panel',
  xtype: 'cityAllView',
  config: {
    items:[{
      xtype: 'cityItemView',
      store: 'project.store.cities',
    }]
  }
});

カスタム コンポーネント ビュー:

Ext.define('project.view.cityItem', {
  extend: 'Ext.Panel',
  xtype: 'cityItemView',
  config: {
    items: [{
      itemTpl: '{city}'
    }]
  }
});
4

2 に答える 2

0

cityAllViewではなくcityItemViewにストアを割り当てる必要があります。cityItemViewテンプレートが指定されており、データをロードする必要があります。

Ext.define('project.view.cityItem', {
  extend: 'Ext.Panel',
  xtype: 'cityItemView',
  config: {
    items: [{
      xtype:'list', 
      itemTpl: '{city}'
      store:'project.store.cities'
    }]
  }
});

パネルにデータを設定する場合は、を呼び出す必要がありますsetData()。パネルはストアから直接データをロードできません。代わりにリストビューを使用できるので、都市、国のペアを表示します。cityViewは、そのようにプロパティを保存する必要がなくなりました。

これを試してみてください。

于 2013-02-05T09:24:30.933 に答える
0

ロード リスナーをストアに追加して、レコードをループし、できるだけ多くのパネルを作成できます。

    listeners : {
        load: function( me, records, successful, operation, eOpts ){ 
            var plist = [];
            var cv = Ext.Create('project.view.cityAll');
            if(successful){

                var data = records[i].getData();
                for(var i=0; i<records.length; i++){
                    plist.push({
                        xtype : 'cityItemView',
                        data : data
                    });
                }
                cv.add(plist);
            } 
            // Now add cv to viewport or wherever you want
        }
}

cityItemView好きな方法でデータを使用するには、変更する必要があります。初期化メソッドを使用している場合は、次のようにアクセスできますthis.config.data

于 2013-02-05T12:14:23.470 に答える