将存储负载从视图更改为控制器 ExtJS4
Change store load from view to controller ExtJS4
我有下一个代码。我的观点:
Ext.define('Test.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',
id: 'comboEstados',
value: 'Todos',
queryMode: 'local',
editable: false,
displayField: 'label',
valueField: 'value',
store: 'filtros.strEstadosMtoOrganismos'
},
{text:'CCAA'},
{
xtype: 'combo',
id: 'comboCCAA',
value: 'Todas',
queryMode: 'local',
editable: false,
displayField: 'label',
valueField: 'value',
store: 'filtros.strComunidadesAutonomas',
matchFieldWidth: false
},
]
}
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);
Ext.getCmp('comboEstados').getStore().load();
}
});
我的控制器:
Ext.define('Test.controller.ctrlMtoOrganismos', {
extend: 'Ext.app.Controller',
models:[
'mantenimientos.organismos.mdlMtoOrganismos',
'filtros.mdlEstadosMtoOrganismos'
],
stores:[
'mantenimientos.organismos.strMtoOrganismos',
'filtros.strEstadosMtoOrganismos',
'filtros.strComunidadesAutonomas'
],
views: [
'mantenimientos.organismos.viewModuloMtoOrganismos'
],
refs: [
],
init: function() {
}
});
实际上我在视图中加载了商店,但我认为最好将其加载到控制器MVC中。但是我不希望商店在应用程序启动时加载,我想加载商店(Ext.getCmp('comboEstados').getStore().load();)加载视图时从控制器。
我更熟悉 ExtJS>= 5.0,但我认为以下代码可以解决您的问题。
在控制器中:
init: function() {
this.control({
'viewGridMtoOrganismos': {
beforerender: this.loadStore
}
})
},
this.loadStore: function(view){
Ext.getCmp('comboEstados').getStore().load();
}
在这种情况下,我使用的是 beforerender(在视图完全渲染时加载存储),但您可以使用 afterrender 或渲染。
作为提示,您应该在编码时检查一些有关命名法(就小部件名称而言)和良好实践的煎茶信息。
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 将值从html传递到AngularJS控制器
- 从我的控制器返回一个不同于200的代码以触发ajax错误,这被认为是一种好的做法吗
- 从控制器继承了隔离的作用域以生成可重用的指令
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 为什么不't我的变量在我的控制器中填充后在我的视图中呈现
- Nodejs API控制器,用于在API之间切换
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 将不在模型中的数据返回到mvc控制器
- 未激发路由的控制器属性上的观察者
- 将存储负载从视图更改为控制器 ExtJS4
- Extjs4.2 - getView() 方法在控制器中不起作用