J'ai créé un objet simple d'entrée comme ceci:Comment puis-je définir la valeur d'un champ de texte de saisie dans Bokeh à partir de JavaScript?
self.dummy_text = TextInput()
self.dummy_text.css_classes = ['dummy_text']
Et je veux de recouvrer la valeur de ce champ avec autre contrôle. Par exemple, ce bouton:
self.dummy_button = Button(label="Foo", button_type="success")
self.dummy_button.css_classes = ['dummy_button']
Si je change la valeur du champ de saisie de texte à la main, le bouton obtenir la valeur de texte d'entrée bien. Mais si je modifie la valeur par JavaScript (jQuery) comme celui-ci la valeur ne reçoit pas du tout:
$("#bokeh_iframe").contents().find(".dummy_text input").val('text value')
J'ai ouvert bokeh dans le iframe avec id bokeh_iframe
. Je dois utiliser find
car avec un sélecteur direct ne fonctionne pas. Enfin, j'invoque le bouton du clic comme ceci:
$("#bokeh_iframe").contents().find(".dummy_button button").get(0).click();
La méthode bouton ressemble à ceci:
def dummy_button(self):
dummy_text_value = self.dummy_text.value
Qu'est-ce qui se passe? Ai-je besoin de dire à bokeh de synchroniser les données d'une autre manière? Dois-je trouver un autre moyen de remplir le champ par JavaScript?
Note: Je dois faire cette solution de contournement pour exécuter certaines actions dans le serveur bokeh d'une application externe (électronique, qui est construit avec nœud)
Note2: Un autre élément: prevObject: jQuery.fn.init(1)
apparaît avec les objets d'entrée et de bouton , pourrait être que le problème? Voilà pourquoi je dois utiliser get(0)
J'apprécie toute votre aide. Voulez-vous dire utiliser l'attribut args comme ça? 'CustomJS (args = dict (source = source), code =" "" [...] "" ")." De cette façon, j'enverrais l'argument de Python vers JavsScript En fait, je veux faire le contraire, envoyer un paramètre de JavaScript (de l'application externe, pas du code CustomJS) à une méthode python – ChesuCR
J'ai testé la solution 'trigger ('change')' mais ça ne marche pas :( – ChesuCR
J'ai aussi essayé le ' window.document.Bokeh.index' solution et ça marche Donc, la solution serait celle-ci: 'var models = window.Bokeh.index [Object.keys (window.Bokeh.index) [0]]. model.document. _all_models; var input_dummy_text = models [dummy_text_id]; input_dummy_text.value = 'nouvelle valeur'' – ChesuCR