0

私の主な見解は

Ext.define("casta.view.Main", {
    extend: 'Ext.tab.Panel',
    apitoken:'NULL',
    callbackdata:'NULL',
    requires: [
        'Ext.TitleBar',
        'Ext.Video',
        'casta.view.Intro'

    ],
    config: {
        tabBarPosition: 'top',

        items: [
                 //intro.js actually need json rendering

                { title:'Intro',
                   xclass: 'casta.view.Intro' ,
                   iconCls:'user',
                   renderTo: document.body,

                 }

        ]
    }
});

私はintro.jsで以下のような外部URLからjsonを呼び出しました

 Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['id', 'username']
})

Ext.define('casta.view.Intro', {
    extend: 'Ext.tab.Panel',
    alias: 'widget.Intro',

    requires: ['Ext.data.Store'],

    itemTpl: '{id} - {username}',

    initComponent: function(){
        this.store = new Ext.data.Store({
            autoLoad: true,
            model: 'User',
            proxy: {
                type: 'ajax',
                url: 'http://localhost:8000/api/casta/user/?format=json',
                reader: {
                    type: 'json',
                    root: 'objects'
                }
            }
        });
        this.callParent();
    }  
});

Ext.onReady(function(){
    Ext.create('Ext.tab.Panel', {
        width: 400,
        height: 400,
        renderTo: document.body,
        items: [{
            title: 'My View',
            xtype: 'Intro'
        }]
    })
});

応答から取得したjsonは次のとおりです

{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_count": 2}, "objects": [{"date_joined": "2012-05-18T15:44:54", "first_name": "", "id": 1, "last_login": "2012-05-18T15:44:54", "last_name": "", "resource_uri": "/api/casta/user/1/", "username": "admin"}, {"date_joined": "2012-05-21T12:05:00", "first_name": "", "id": 29, "last_login": "2012-05-21T12:05:00", "last_name": "", "resource_uri": "/api/casta/user/29/", "username": "sumit"}]}

静的文字列を保持するたびに、テンプレートが更新されます。それ以外の場合、テンプレートは更新されません。誰かが私がしなければならないことを教えてもらえますか..このパネルが呼び出されたときにのみajaxを呼び出したい onloadのではなく、のような関数もありますinitcomponent

4

1 に答える 1

1

あなたはこれについて完全に間違った方法で進んでいます。例を修正しようとする代わりに、これを見てください。

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['id', 'username']
})

Ext.define('MyView', {
    extend: 'Ext.view.View',
    alias: 'widget.myview',

    requires: ['Ext.data.Store'],

    itemTpl: '{id} - {username}',

    initComponent: function(){
        this.store = new Ext.data.Store({
            autoLoad: true,
            model: 'User',
            proxy: {
                type: 'ajax',
                url: 'data.json',
                reader: {
                    type: 'json',
                    root: 'objects'
                }
            }
        });
        this.callParent();
    }  
});

Ext.onReady(function(){
    Ext.create('Ext.tab.Panel', {
        width: 400,
        height: 400,
        renderTo: document.body,
        items: [{
            title: 'My View',
            xtype: 'myview'
        }]
    })
});
于 2012-05-28T08:38:49.143 に答える