1

根据问题和文章的数量,简单tip.html = 'new value';应该可以工作,但由于某些原因,对我来说并非如此。

在这里,我创建了一个演示来演示tip.html修改在渲染一次后不会改变提示的主体:

http://jsfiddle.net/zcYqe/1/

重现步骤:

场景一:

  1. 将鼠标移到红色方块上以查看提示
  2. 按下按钮
  3. 看到提示没有改变

场景二:

  1. 按下按钮(不 - 不要将鼠标放在红色方块上)
  2. 查看小费的值已更改

我错过了什么?如何在运行时更改它(场景 1)?

4

2 回答 2

4

您不能只设置一个属性,一旦创建了组件,您需要调用一个方法,以便它实际更新底层 DOM:

tip.update('new');

于 2013-07-17T22:28:06.367 回答
0

您可以使用beforeshowExtJS 4.2.x(可能更早版本)中的侦听器来完成此操作。

var changeCount = 1;

var tip = Ext.create('Ext.tip.ToolTip', {
    target: 'hoverme',
    html: 'Press this button to clear the form',
    listeners: {
        // Change content dynamically depending on which element triggered the show.
        beforeshow: function updateTipBody(tip) {
            tip.update( "Changed " + changeCount + " times" );
            changeCount ++;
        }
    }

});

document.getElementById('btn').addEventListener('click', function(e) {
    tip.html = 'new';
    return false;
})
于 2014-09-12T19:34:05.800 回答