我的代码如下
initComponent: function()
{
var me = this;
this.callParent(arguments);
var rowAlerterCond = this.rowAlerter;
if(rowAlerterCond !== undefined && rowAlerterCond !==null && typeof rowAlerterCond ==='object')
{
var returnVar = this.buildCondition(rowAlerterCond);
this.rowHighlightConfig = returnVar;
me.viewConfig.getRowClass = function(record, rowIndex, rowParams, store) {
if(this.rowHighlightConfig)
return eval(this.rowHighlightConfig) ? 'orangeHighlight' : '';
};
}
},
此处getRowClass永远不会被调用。我该改变什么吗?如果我在viewConfig中添加getRowClass它可以工作,但我需要遍历树以获取rowHighlightConfig变量。对此有何解决方案?
答案 0 :(得分:0)
viewConfig
用于配置网格面板使用的View类。此视图在父initComponent
中实例化和配置 - 您在第4行调用的视图。
之后,修改viewConfig为时已晚,因为视图已经完成。因此,您需要在调用callParent
之前设置viewConfig 。
你是怎么做到的?好吧,关于getRowClass
属性的美妙之处在于它需要一个函数 - 或者一个闭包。所以喜欢这个:
initComponent: function() {
var me = this; // important to grab this; the getRowClass will run in a different scope
this.viewConfig = this.viewConfig || {}
this.viewConfig.getRowClass = function() {
if (!Ext.isDefined(me.rowHighlightConfig) {
var rowAlerterCond = me.rowAlerter;
if (Ext.isObject(rowAlerterCond) {
var returnVar = me.buildCondition(rowAlerterCond);
me.rowHighlightConfig = returnVar;
} else {
me.rowHighlightConfig = 'orangeHighlight'
}
return eval(me.rowHighlightConfig);
}
this.callParent(arguments); // Now call the parent initComponent
}