如何从Bokeh服务器触发浏览器中任意JavaScript代码的执行?

时间:2017-03-07 17:01:34

标签: python-3.x bokeh

如何从Bokeh Server触发浏览器中任意JavaScript代码的执行? 创建隐藏按钮然后“触发”它是最简单的方法吗?

2 个答案:

答案 0 :(得分:1)

来自Bryan Van de Ven @bryevdv 3月08日20:52

  

@Sklavit你可能想要等bokeh/bokeh#5941

来自说明:

  

API与用于注册属性更改触发的回调的现有on_changejs_on_change API非常相似。

关于2017-03-09的问题,有几种方法可以从服务器触发JS代码:

  • 将JS回调定义为

    some_model.callback = CustomJS(code="alert('hi!')")
    

    触发callback的内容尚不清楚

  • 将JS回调定义为

    some_model.js_on_change = CustomJS(code="alert('hi!')")
    

    js_on_change仅适用于少数model

  • DataTable中的代码注入

    TableColumn(..., formatter=HTMLTemplateFormatter(template="<% alert('hi!') %>"))
    

我目前的解决方案 创建隐藏的持有者

    callback_holder = PreText(text='', css_classes=['hidden'])
    callback = CustomJS(args={}, code='alert(cb_obj.text);')
    callback_holder.js_on_change('text', callback)

然后在申请的其他部分:

    def update():
        callback_holder.text = 'data for JS code'
    curdoc().add_next_tick_callback(update)

答案 1 :(得分:0)

您可能想要使用templates。可以在此处找到如何使用散景服务器应用程序模板的示例: https://github.com/bokeh/bokeh/tree/master/examples/app/crossfilter