2012-08-28 68 views
0

我App.js的代码在这里:商店加载顺序

Ext.Loader.setConfig({ 
    enabled: true 
}); 

Ext.application({ 
    name: 'KP', 
    appFolder: 'scripts/app', 

    controllers: [ 
     'MainSearch', 'List' 
    ], 

    launch: function() { 
     Ext.create('Ext.container.Viewport', { 
      items: { 
       xtype: 'searchdata' 
      } 
     }); 
    } 
}); 

的问题是: 我有模式( '列表'),存储( '列表'),视图( '列表')和控制器('列表') - 所有这些都是我的网格。在商店('列表')我打电话给服务,这给了我一些数据。

我想在“MainSearch”表单后查看我的网格。所以,我首先调用了“MainSearch”。 (在App.js中)。但是,在我的浏览器中显示“MainSearch”表单之前,“List”中的服务被调用。我不明白为什么会发生。 (当App.js不包括 '列表' 控制器 - 一切工作正常)

“列表” 的 '商店' 代码:

Ext.define('KP.store.List', { 

    extend: 'Ext.data.Store', 
    model: 'KP.model.List',   

    autoLoad: true, 

    pageSize: 20, 
    autoLoad: { start: 0, limit: 20 }, 


    autoSync: true, 
    proxy: { 
     type: 'ajax', 
     limitParam: 'size', 
     startParam: undefined, 
     api: { 

     read: '/adres/listls' 
     }, 
     reader: { 
      type: 'json', 
      root: 'data', 
      successProperty: 'success', 
      totalProperty: 'total' 
     }  
    } 

}); 

'列表' 控制器代码:

Ext.define('KP.controller.List', { 

    extend: 'Ext.app.Controller', 

    views: ['personAccount.List'], 
    models: ['List'], 
    stores: ['List'], 

    init: function() { 
     this.control({ 
      'list button[action=close]': { 
       click: this.closeClick 
      } 
     }); 
    }, 

    //закрытие формы 
    closeClick: function (button) { 
     var win = button.up('window'); 
     win.close(); 
    } 

}); 

我的列表视图代码:

Ext.define('KP.view.personAccount.List', { 
    extend: 'Ext.window.Window', 
    alias: 'widget.list', 

    autoScroll: true, 
    modal: false, 
    plain: false, 
    autoShow: true, 
    layout: { 
     type: 'fit' 
    }, 

    initComponent: function() { 
     var me = this; 
     Ext.applyIf(me, { 

      items: [ 
          { 
           xtype: 'gridpanel', 
           store: 'List', 

           forceFit: true, 
           columns: [ 
              .... 
             ], 

           dockedItems: [ 
               { 
                xtype: 'pagingtoolbar', 
                store: 'List', 
                dock: 'bottom',              
                displayInfo: true 
               } 

              ] 
          } 

        ] 
     }); 



     me.callParent(arguments); 
    } 

}); 

非常感谢!

+0

这是不是很清楚你问什么,你需要发布更多的信息。 –

+0

它一点也不清楚。 “这是问题”是最好的部分......哪个问题? – sra

+0

可能是由于initComponent:function()在Vew“List”中? – Oleg

回答

2

你需要做的是在你的商店中禁用autoLoad。这种方式存储将被初始化,但它不会调用您的服务来获取数据。稍后,您将在您的网格的afterrender处理程序中调用store.load()

+0

这是在您的商店deffinately autoLoad,使用 autoLoad:false。 您也可以在网格的initComponent中加载商店。 –

+0

这似乎是真的,但它并没有帮助我(我添加了一个视图代码,可能你有一些想法? – Oleg

+0

我做到了!我还必须从我的商店删除此代码:autoLoad:{start:0,limit:20}谢谢你的建议! – Oleg