Problème avec Jquery dans le composant de plugin

jQuery est-il activé automatiquement pour les composants de plugin ? Aurais-je manqué une étape de configuration ?

Je rencontre des problèmes pour accéder simplement au DOM HTML via jQuery (avec pour objectif final d’utiliser la fonction autocomplete de jQuery). Voici un exemple de l’une de mes tentatives, visant à récupérer l’ID d’un élément en utilisant son identifiant. L’élément n’est jamais trouvé. On dirait que le JavaScript n’a pas de point de référence.

---- dans /src/plugins/test/assets/javascripts/discourse/components ----
---- element-main.js.es6 ----
import discourseComputed, { observes } from "discourse-common/utils/decorators";
import jQuery from 'jquery';

export default Ember.Component.extend({
  init() {
    this._super(...arguments);
    console.log("dans les templates/components/element-main.js.es6");
    console.log(jQuery);
    const aaa = jQuery('#eleinp');
    console.log(aaa)
    console.log(aaa.attr('id'));
  }
});

---- dans /src/plugins/test/assets/javascripts/discourse/templates/components ----
---- element-main.hbs ----
<p>élément-main dans le modèle</p>
<input id="eleinp" value="HAHAHA">

J’ai également essayé this.element, (this.element), (this), $(), etc.

init est trop tôt dans le cycle de vie pour appliquer jQuery. De plus, vous n’avez pas besoin de l’importer. Enfin, vous devez évaluer si vous avez VRAIMENT besoin de l’utiliser dès le départ. Si vous devez l’utiliser, didInsertElement ou didRender sont les endroits appropriés pour le faire.

Merci ! didRender() a bien fonctionné, j’ai également supprimé l’instruction d’importation redondante. J’utilise jQuery car j’ai une requête de recherche personnalisée sur l’entrée qui ne s’harmonise pas avec l’élément HTML ‘datalist’. En effet, datalist n’affiche les options que lorsqu’elles contiennent explicitement une sous-chaîne.

Essayez d’éviter jQuery, car il sera supprimé d’Ember et donc de Discourse dans les deux prochaines années. Le JS moderne natif suffit.

Merci pour l’info, je regarde Awesomplete plutôt que l’autocomplétion de JQuery maintenant