1

コンテナのデータを動的に取得したい。コンテナアイテムを動的に表示するのを手伝ってくれる人はいますか? 日付またはストアの URL は外部ページである可能性があります。MVC を使用してコンテナーのストア/日付を取得したいと考えています。私を助けることができますか?

以下は私のコードです

Ext.define('Mvcapp.view.LayoutList',{
extend: 'Ext.Container',
xtype: 'layoutlist',

config:{
        title: 'Layout',
        iconCls:'star',
        styleHtmlContent: true,
        items:[{
        data: [{
            fname: 'Stratton',
            lname: 'Sclavos',
            role: 'Executive Chairman'
        }, {
            fname: 'Michael',
            lname: 'Mullany',
            role: 'CEO'
        }, {
            fname: 'Ted',
            lname: 'Driscoll',
            role: 'Vice President Worldwide Sales'
        }, {
            fname: 'Abraham',
            lname: 'Elias',
            role: 'Chief Technical Officer'
        }, {
            fname: 'Jeff',
            lname: 'Hartley',
            role: 'Vice President of Services and Training'
        }, {
            fname: 'Adam',
            lname: 'Mishcon',
            role: 'Vice President of Operations'
        }, {
            fname: 'Judy',
            lname: 'Lin',
            role: 'Vice President of Engineering'
        }], // data
      tpl: '<tpl for="."><div style="float:left;width:300px;"><strong>{lname}</strong>, {fname} <em class="muted">({role})</em></div></tpl>'
      }]

}
});
4

1 に答える 1

2

あなたがする必要があることは、最初に、必要なフィールドを持つモデルを定義することです。次に、ストアを作成し、モデル構成を以前に定義したものに設定します。ストアを定義する際に、senchatouchが提供するさまざまなプロキシから選択する必要があります。携帯電話用に構築されるアプリを構築している場合は、選択の余地はあまりありません。単にJsonPプロキシを使用する必要があります。

これが私がすることです-

     var listitem=Ext.define('ListItem', {
        extend: 'Ext.data.Model',
        config: {
            fields: ['fname','lname','role']
        }
    });

    var store = Ext.create('Ext.data.Store', {
        model: listitem,
        autoLoad: true,
        proxy: {
            type: 'jsonp',
            url: 'http://localhost/json_feed_url.php',
            reader: {
                type: 'json',
                rootProperty: 'data'
            }
        }
    });
    var myList = Ext.create('Ext.List', {
        styleHtmlContent:true,
        store:store,
        itemTpl:['<div style="float:left;width:300px;"><strong>{lname}</strong>, {fname} <em class="muted">({role})</em></div>']
    });
    Ext.Viewport.add(myList);

ご覧のとおり、私は最初にストアのモデルを定義しました。ストアはJsonPプロキシを使用して作成され、自動的に読み込まれるように設定されています。また、サーバーから受信した応答を読み取って解析するリーダーも設定しました。rootProperyを設定するだけなので、もう心配する必要はありません。

次に、リストが作成され、以前に定義されたものがその構成storeに割り当てられます。したがって、このコードが実行されるたびに、storeはサーバーからデータを取得してリストに表示します。それがあなたが望むものだと思います。

まず、このピースlaunchをあなたのメソッドの中に入れるだけで、app.js準備は完了です。PHPコードが必要な場合は、ここにあります-

<?php header('Content-type:application/javascript');
$items =array();
$items[] = array('fname'=>'A','lname'=>'B','role'=>1);
$items[] = array('fname'=>'C','lname'=>'D','role'=>2);
$items[] = array('fname'=>'E','lname'=>'F','role'=>3);
$items[] = array('fname'=>'G','lname'=>'H','role'=>4);
$items[] = array('fname'=>'I','lname'=>'J','role'=>5);
print $_GET['callback'].'('.json_encode(array('data'=>$items)) .')';
?>

私はphpnallに精通していますが、自分に合ったものなら何でも使用できます。アイデアは同じです。:D

于 2013-02-02T15:10:52.303 に答える