javascript - 将存储负载从 View 更改为 Controller ExtJS4

标签 javascript extjs 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();
}
});

我的 Controller :

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() {

}
});

实际上我在 View 中加载商店,但我认为最好在 Controller 、MVC 中加载它。 但我不希望在应用程序启动时加载商店,我想从 Controller 加载商店(Ext.getCmp('comboEstados').getStore().load();)当 View 加载时。

最佳答案

我更熟悉 ExtJS >= 5.0,但我认为以下代码可以解决您的问题。

在你的 Controller 中:

init: function() {
    this.control({
        'viewGridMtoOrganismos': {
             beforerender: this.loadStore
         }   
    })
},

this.loadStore: function(view){
    Ext.getCmp('comboEstados').getStore().load();
}

在本例中,我使用 beforerender(在 View 完全渲染时加载存储),但您可以使用 afterrender 或 render。

作为提示,您应该在编码时检查一些有关命名法(按照小部件名称)和良好实践的 Sencha 信息。

关于javascript - 将存储负载从 View 更改为 Controller ExtJS4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35477659/

相关文章:

javascript - typescript for 循环不执行

javascript - 如何解析字符串 Unirest 响应

javascript 提交 2 个表单在 chrome 中不起作用

javascript - ExecJS::RuntimeUnavailable 在 Rails 4.1.4 中

javascript - Extjs 编辑器网格中的复选框

extjs - 在 Selenium Webdriver 中使用 Element 的工具提示作为定位器

javascript - Ext JS SuperBoxSelect 组件

javascript - 下载以前版本的 ExtJs

extjs4 - 将商店合并到另一个

php - EXTJS 4 : Editable grid doesn't commit changes to MySQL Database