EXTJS 4.2 - 如何动态更改网格行的操作图标工具提示?

EXTJS 4.2 - How to Dynamically Change a Grid Row's Action Icon Tooltip?

我有一个显示一堆记录的网格。我在网格中有一个操作列,其中显示了用户可以单击以对每个单独记录执行各种操作的各种按钮。

其中一个按钮我想根据记录类型动态更改工具提示。我有 2 种类型,activity 和铅。如果记录是 activity,我希望按钮在光标悬停在它上面时显示 'Close Activity' 工具提示。如果记录是线索,我希望按钮在光标悬停在它上面时显示 'Accept Lead' 工具提示。

现在我有一个 getClass 方法,它已经在检查其他东西以动态更改按钮图像,例如,如果它是一个已经关闭的 lead/activity,它会显示一个红色复选标记,如果它是没有关闭,它会显示一个绿色的复选标记。我也只想要一种更改工具提示的方法。这是我当前的 getClass 方法代码。

getClass: function(v, meta, rec) {
    if( 'Y' === rec.get('closed_f') ) {
        return 'x-icon-complete-red';
    } else {
        return 'x-icon-complete-green';
    }
}

如何更改工具提示?我已经尝试过 this.tooltip = '[text]', this.setTooltip('[text]')。我注意到在上面的代码上下文中,'this'实际上是网格对象,而不是按钮对象,所以它显然是行不通的。

要根据记录数据切换工具提示,可以使用 getTip 函数(如 getClass)...(通常)。由于 getTip 不适用于 Ext 4.2 中的每个人,如果 getTip 不起作用,您可以像这样在 getClass 函数中添加动态工具提示:

getClass: function(v, meta, rec) {
    if( 'Y' === rec.get('closed_f') ) {
        this.items[0].tooltip = 'Your custom tooltip';
        return 'x-icon-complete-red';
    } else {
        return 'x-icon-complete-green';
    }
}

请记住,this.items[0] 中的索引是操作列中按钮的索引。如果你的按钮是第二个,你必须设置 1 而不是 0 等等...

http://docs.sencha.com/extjs/4.2.2/#!/api/Ext.grid.column.Action-cfg-getTip

解决方案:https://fiddle.sencha.com/#view/editor&fiddle/2e7k