Я не могу загрузить данные магазина при загрузке представления. Это мой магазин: (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.down ('combo'). GetStore(). Load(); загружает все магазины combo? 2. Как я могу избежать теперь снова запускать php, который заполняет хранилище при расширении комбо? – SensacionRC
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
И что лучше, загрузите магазин в виде или в контроллере? – SensacionRC