initcomponent中的getrowclass不起作用

时间:2016-09-19 17:39:18

标签: extjs6 extjs6-classic

我的代码如下

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变量。对此有何解决方案?

1 个答案:

答案 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
}