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,

                 }

        ]
    }
});

我已经从外部 url 调用了 json,如下所示 intro.js

 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"}]}

每当我保留静态字符串时,模板都会更新,否则模板不会更新。任何人都可以告诉我我必须做什么.. 还有任何功能,onload而不是initcomponent我只想在调用此面板时调用 ajax

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 回答