我使用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();
}
}
});
});
答案 0 :(得分:0)
所有配置对象仅在课程的实例化时间相关,之后不会产生任何影响。
你可以解决这个问题:
listeners : {
afterrender: function(p){
p.getView().getRowClass = this.up('window').getController().color;
}
}