2016-02-10 4 views
1

Я не могу загрузить данные магазина при загрузке представления. Это мой магазин: (strEstadosMtoOrganismos.js)Невозможно загрузить хранилище комбо в ExtJS4

Ext.define('TelicitaApp.store.filtros.strEstadosMtoOrganismos', { 
extend: 'Ext.data.Store', 
model: 'TelicitaApp.model.filtros.mdlEstadosMtoOrganismos', 
autoLoad: false, 
proxy: { 
    type: 'ajax', 
    api: {read: './data/php/filtros/Tmc_EstadosMtoOrganismos.php?despliegue='+TelicitaApp.Settings.despliegue}, 
    reader: { 
       type: 'json', 
       root: 'data', 
       totalProperty: 'total', 
       successProperty: 'success' 
    } 
} 
}); 

Это мое мнение: (viewGridMtoOrganismos.js)

Ext.define('TelicitaApp.view.mantenimientos.organismos.viewGridMtoOrganismos', { 
extend: 'Ext.grid.Panel', 
alias: 'widget.viewGridMtoOrganismos', 
requires: [ 
], 
initComponent: function() { 
    var toolbar1 = { 
      xtype : 'toolbar', 
      dock : 'top', 
      items: [ 
        { 
         iconCls:'limpiar-icon', text:'Limpiar', handler: function() {}, 
        }, 
        '->', 
        { 
         iconCls:'refresh', text:'Recargar', handler: function() {}, 
        } 
      ] 
    }; 

    var toolbar2 = { 
      xtype: 'toolbar', 
      dock: 'top', 
      items: [ 
        {text:'<span style="color:#C85E00;">Estado</span>'}, 
        { 
         xtype: 'combo', 
         value: 'Todos', 
         queryMode: 'remote', 
         triggerAction: 'all', 
         editable: false, 
         displayField: 'label', 
         valueField: 'value', 
         store: 'filtros.strEstadosMtoOrganismos' 
        } 
      ] 
    } 

    Ext.apply(this, { 
     frame: true, 
     bodyPadding: '5 5 0', 
     fieldDefaults: { 
      labelAlign: 'top', 
      msgTarget: 'side' 
     }, 
     forceFit: true, 
     height: 300, 
     stripeRows: true, 
     loadMask: true, 
     tbar: { 
      xtype: 'container', 
      layout: 'anchor', 
      defaults: {anchor: '0'}, 
      defaultType: 'toolbar', 
      items: [ 
        toolbar1,toolbar2 
      ]   
     }, 
     columns: [ 
        {header:'<span style="color:blue;">Id</span>', xtype: 'numbercolumn',format:'0', width:35, sortable: true}, 
     ] 
    }); 
    this.callParent(arguments); 
} 
}); 

Это мой контроллер: (ctrlMtoOrganismos.js)

Ext.define('TelicitaApp.controller.ctrlMtoOrganismos', { 
extend: 'Ext.app.Controller', 
models:[ 
     'mantenimientos.organismos.mdlMtoOrganismos', 
     'filtros.mdlEstadosMtoOrganismos' 

], 
stores:[ 
     'mantenimientos.organismos.strMtoOrganismos', 
     'filtros.strEstadosMtoOrganismos' 
], 
views: [ 
     'mantenimientos.organismos.viewModuloMtoOrganismos' 
], 
refs: [ 
], 
init: function() { 
    this.control({ 

    }); 
}, 
onLaunch: function() { 

}, 
}); 

Если я установил свойство autoload в хранилище равным true, он загружает данные при запуске приложения. ut Я хочу загрузить данные при загрузке представления. После загрузки представления, если я разворачиваю комбо, он запускает php-файл taht, заполняет комбо, но я хочу, чтобы он автоматически загружал данные после загрузки вида, а не когда вы расширяете комбо.

ответ

1

Заменить

this.callParent(arguments); 
} 

с

this.callParent(arguments); 
    this.down('combo').getStore().load(); 
} 

и вы хорошо идти.

+0

Это работает, теперь две вещи: 1. Если у меня больше комбо, с this.down ('combo'). GetStore(). Load(); загружает все магазины combo? 2. Как я могу избежать теперь снова запускать php, который заполняет хранилище при расширении комбо? – SensacionRC

+0

1. Нет, ['down'] (http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.mixin.Queryable-method-down) доставит вам первый. Вы можете перебирать ['query'] (http://docs.sencha.com/extjs/6.0/6.0.1-classic/#!/api/Ext.mixin.Queryable-method-query) вместо этого, чтобы загрузить все их. 2. Если вы установите queryMode: «local», комбо не запускает загрузку магазина при открытии меню. – Alexander

+0

И что лучше, загрузите магазин в виде или в контроллере? – SensacionRC

Смежные вопросы