Comment ajouter une info-bulle à un composant ExtJS?

Je fais un composant ExtJS, et je veux qu'il utilise une info-bulle QuickTips. Si je fais un élément en utilisant DomHelper, je peux définir une info-bulle, pas de problème. Si, cependant, je fais un composant, comme

new BoxComponent({
  qtip: "This is a tip"
});

Rien ne se passe. J'ai également essayé de nommer la propriété "tooltip", mais pas de chance. Est-il une bonne façon de faire cela? Le hack que j'ai en place maintenant qui fonctionne est

new BoxComponent({
  qtip: "This is a tip",
  listeners: {
    rendered: function(c){
      Ext.QuickTips.register({
        target: c.getEl(),
        text: c.qtip
      }
    }
});

J'ai l'impression que ne peut pas - être raison. Je suppose que je pourrais simplement étendre le composant pour le faire automatiquement, mais il semble être un cas assez commun que je devrais être capable de le faire sans piquer sous le capot comme ça.

25
demandé sur Coderer 2011-04-30 04:32:40

9 réponses

Je pense que vous le faites tout à fait correctement. Je ne vois vraiment pas le besoin de QuickTips dans les composants arbitraires, en particulier dans les conteneurs, car cela pourrait conduire à plusieurs info-bulles dans le même composant.

8
répondu user123444555621 2011-04-30 09:11:30

Dans ExtJS 4.2.1, je suis capable d'ajouter une astuce à une case à cocher de cette façon:

new Ext.form.field.Checkbox({
  ...
  tip: 'This is a tip',
  listeners: {
    render: function(c) {
      Ext.create('Ext.tip.ToolTip', {
        target: c.getEl(),
        html: c.tip 
      });
    }
  });
19
répondu DSoa 2013-07-15 19:28:44

Cela devrait fonctionner:

new BoxComponent({
 tooltip: new Ext.ToolTip({
        title: 'Example Tooltip title',
            text: 'Example Tooltip text'

    }),
  listeners: {
    rendered: function(c){
      Ext.QuickTips.register({
        target: c.getEl(),
        text: c.qtip
      }
    }
});
3
répondu Deniz Toprak 2011-05-02 10:42:38

Gestion des ressources humaines. J'ai regardé comment Ext.Button le fait, en passant tooltip à l'appel de configurationsetTooltip sous le capot.

Non testé, mais je pense que votre meilleur pari est quelque chose comme:

Ext.Component.prototype._onRender = Ext.Component.prototype.onRender;
Ext.override(Ext.Component, {
  onRender: Ext.Component.prototype._onRender.createSequence(function(ct, position) {
    // setTooltip code adapted from Ext.Button, looking at tooltip property
  });
});
2
répondu wombleton 2011-04-30 03:11:43

Je pense que c'est la meilleure façon dans Extjs 4:

Vous devez ajouter un écouteur afterrender, puis lorsque yor componenten est déjà créé, vous pouvez ajouter l'info-bulle, de cette façon:

listeners : {
    afterrender : function(obj) {
        if (this.max != null && this.ave != null && this.min != null) {
            obj.tip = Ext.create('Ext.tip.ToolTip', {
                        target : obj.getEl().getAttribute("id"),
                        trackMouse : true,
                        renderTo : document.body,
                        html : this.htmlTip,
                        title : this.title
                    });
        }
    }
}

J'espère que ça aide.

2
répondu Javier Sanchez 2012-03-05 15:08:55

J'utilise toujours cette façon dans ExtJs 3

listeners: {
    render: function(c) {
        Ext.QuickTips.register({
            target: c,
            text: 'Enter \'-1\' for a 1 time only'
        });
    }
}
0
répondu Mohammad AlQanneh 2013-07-03 11:24:07

Cette façon fonctionne parfaitement! L'essayer! (Extjs 4.2)

var boxComponent = Ext.create('Ext.Component', {
  id: 'id111',
  html: '<img src="js/extjs/resources/cb-theme/images/shared/icon-question.png">',
  width: 20,
  height: 20,
  margin: '0 0 0 10'
});

Ext.tip.QuickTipManager.init();

Ext.tip.QuickTipManager.register({
  target: 'id111',
  title: 'My Tooltip',
  text: 'This tooltip was added in code',
  width: 100,
  dismissDelay: 10000 // Hide after 10 seconds hover
});
0
répondu Alex Dzeiko 2014-11-06 11:39:28

Le plus simple est de définir l'attribut 'data-qtip' sur l'élément principal du composant:

{
    xtype: 'box',
    autoEl: {
        'data-qtip': "Tooltip text"
    }
}

Assurez-vous d'activer qtips au démarrage de l'application:

Ext.tip.QuickTipManager.init();
0
répondu TheZver 2017-08-16 12:15:59
{
    xtype: 'checkbox',
    tip: 'This is a tip',
    listeners: {
        render: function(c) {
            Ext.create('Ext.tip.ToolTip', {
                target: c.getEl(),
                html: c.tip
            });
        }
    }
}
-1
répondu Filipizaum 2014-06-10 20:43:16