在控制器中定义getRowClass函数

时间:2017-06-11 22:05:32

标签: extjs

我使用getRowClass函数进行自定义网格行样式。在面板组件中,我有2个类似的网格,它们应具有相同的getRowClass逻辑。我想在绑定到父组件的控制器中定义函数体。下面我放置了一些说明问题的测试代码。在示例中,getRowClass设置为指向主控制器中定义的颜色函数,但是在此范围内无法看到此函数。我没有太多的经验,我不知道如何解决这种范围问题,我们将不胜感激。

Ext.define('Test.controller', {
extend: 'Ext.app.ViewController',
alias: 'controller.main',

 color : function(row,index){
     return 'green-row';
 }
});

Ext.onReady(function() {
 win = new Ext.Window({
    title:'Test',
    layout:'fit',
    width:400,
    closeAction:'close',
    target : document.getElementById('buttonId'),
    plain: true,
    controller: 'main',
    items: [{
        xtype: 'grid',
        store: Ext.create("testApp.store.Objects"),
        selType: 'checkboxmodel',

        columns : [{
            text : 'Column1',
            dataIndex : 'Column1'
        },{
            text : 'Column2',
            dataIndex : 'Column2'
        },{
            text : 'Column3',
            dataIndex : 'Column3'
        }],
        viewConfig : {
            getRowClass : 'color'
        }
    }]
 });
 Ext.create('Ext.Button', {
    renderTo: Ext.getElementById('buttonId'),
    text: 'Click Me',
    listeners: {
       click: function() {
          win.show();
       }
    }
 });
});

1 个答案:

答案 0 :(得分:0)

所有配置对象仅在课程的实例化时间相关,之后不会产生任何影响。

你可以解决这个问题:

listeners : {
            afterrender: function(p){
               p.getView().getRowClass = this.up('window').getController().color;
            }
        }