Ext.define('school.view.home.Home', { extend: 'Ext.container.Container', xtype: 'home', id: 'home', requires: [ 'Ext.layout.container.Border', 'Ext.ux.layout.ResponsiveColumn' ], controller: 'home', viewModel: { type: 'home' }, cls: 'x-home-panel', padding: '0 16 0 0', layout: 'responsivecolumn', scrollable: true, REFRESH_INTERVALS: 5 * 60 * 1000, // 刷新间隔 defaults: { shadow: true, cls: 'x-home-box', userCls: 'big-100 small-100', }, items: [{ style: { marginRight: '0', }, xtype: 'infocard' }, { xtype: 'panel', style: { background: '#f4f4f4', }, latyout: 'responsivecolumn', defaults: { userCls: 'x-home-chart big-50 small-50', }, items: [{ xtype: 'studentgender', padding: '0 0 0 14', margin: '0 16 0 0', }, { xtype: 'chinessavg', padding: '0 0 0 14', margin: 0, }] }], initComponent: function() { this.lastTime = Ext.Date.now(); this.callParent(arguments); }, listeners: { onTabActivate: function(p) { return; p.refreshId = window.setInterval((p.refreshStores.bind(p)()).bind(p), p.REFRESH_INTERVALS); }, onTabDeactivate: function(p) { return; p.lastTime = 0; window.clearInterval(p.refreshId); } }, refreshStores: function() { return; var me = this, lastTime = me.lastTime || 0, now = Ext.Date.now(), viewModel = me.getViewModel(), stores = viewModel.storeInfo; if(now - lastTime > me.REFRESH_INTERVALS) { for(var key in stores) { var store = stores[key]; store.load(); } me.lastTime = Ext.Date.now(); } return me.refreshStores; } });