Ext.application和Ext.direct:数据不会显示

时间:2012-04-05 08:32:50

标签: extjs4 extjs-mvc

我是ExtJS的新手,并使用Ext.irect与Ext.direct编写了一个示例应用程序。我配置了我的模型,如下所示

Ext.define('AM.model.UserModel', {
    extend: 'Ext.data.Model',
    alias : 'widget.userModel',
    fields: ['SlNo','name']
    proxy: {
        type: 'direct',
        directfn: HelloWorld.getGridDetails
    }
});

我正在使用网格面板,如下所示

Ext.define('AM.view.user.List' ,{
    extend: 'Ext.grid.Panel',
    alias : 'widget.userlist',    
    title : 'Users',        
    initComponent: function() {
        this.store = {
            model:'AM.model.UserModel',
            autoload:true,
        };
        this.columns = [
                        {
                            header: 'SlNo', 
                            dataIndex: 'SlNo', 
                            width:100,
                            disabled:false 
                        },
                        {
                            header: 'Name',  
                            dataIndex: 'name', 
                            width:150
                        }
        ];
       this.callParent(arguments);
    }
});

最后我的index.js看起来像这样

 Ext.require('Ext.direct.*', function() {
    Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);
  });   
    Ext.require([ 'AM.view.user.List','AM.model.UserModel']);
    Ext.application({
        name: 'AM',
        appFolder:'myApp',
        launch: function() {
            Ext.Direct.addProvider(Ext.app.DirectAPI);                                 
            Ext.create('Ext.container.Viewport', {
                items: {
                    xtype: 'userlist',
                    width: 552
                },
                renderTo: Ext.getBody()
            });
        }
    });

我从HelloWorld.getGridDetails拨打index.js时收到的数据如下所示

 action: "HelloWorld",
    method: "getGridDetails",
    result: [
     {slNo:2, name:"patton"},
     {slNo:3, name:"Omar N Bradely"},
     {slNo:1, name:"Sam Manekshaw"}
   ],   
    tid: 1,
    type: "rpc"

问题在于我无法将数据加载到网格中,即,在显示网格时,根本不会调用直接方法HelloWorld.getGridDetails。我错过了什么吗?你们中的任何人都可以帮忙吗?

感谢
库马尔

1 个答案:

答案 0 :(得分:1)

我实际上已经找到了解决方案。虽然它现在没有意义,但迟到总比没有好。我需要在index.html中修改以下内容

 <script type="text/javascript" src="Api.js"></script>
 **<script type="text/javascript">Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);</script>**
 <script type="text/javascript" src="index.js"></script>

添加

<script type="text/javascript">Ext.direct.Manager.addProvider(Ext.app.REMOTING_API);</script>
在index.js之前

。它开始运作了。