Javascript Bokeh:引用CustomJS回调中的选择小部件
我希望能够在CustomJS回调中引用2个Select小部件(Javascript Bokeh:引用CustomJS回调中的选择小部件,javascript,python,pandas,bokeh,Javascript,Python,Pandas,Bokeh,我希望能够在CustomJS回调中引用2个Select小部件(select1.value和select2.value),因此我不能使用cb_obj.value select1 = Select(title="Level:", options=['All Levels', '1', '2', '3'], callback=callback) 首先,我尝试在回调中直接引用它的值: callback = CustomJS(args=dict(source=source, ts=true_source
select1.value
和select2.value
),因此我不能使用cb_obj.value
select1 = Select(title="Level:", options=['All Levels', '1', '2', '3'], callback=callback)
首先,我尝试在回调中直接引用它的值:
callback = CustomJS(args=dict(source=source, ts=true_source), code="""
var f = select1.value
callback = CustomJS(args=dict(source=source, ts=true_source, select1=select1), code="""
var f = select1.value
这导致错误:未定义select1:
Uncaught ReferenceError: select1 is not defined
at eval (eval at get (bokeh-1.1.0.min.js:31), <anonymous>:9:11)
at i.execute (bokeh-1.1.0.min.js:31)
at e.change_input (bokeh-widgets-1.1.0.min.js:31)
at e.change_input (bokeh-widgets-1.1.0.min.js:31)
at HTMLSelectElement.<anonymous> (bokeh-widgets-1.1.0.min.js:31)
因为select1
的参数是callback=callback
,如果我在定义callback
之前定义select1
,python将生成一个错误,因为callback
在赋值之前被引用。反之亦然,如果我在选择小部件之前定义回调
所以我尝试了这个方法:定义select1
两次
select1 = ... (without the callback argument)
callback = ...
select1 = ... (with the callback argument)
这最终生成了博克图。但是当我点击select小部件时,没有任何价值
var f=select1.value;
console.log('Select1 type ' + f.constructor.name.toLowerCase()); // string, as expected
console.log('Value ' + f); // outputs 'Value ', so f is nothing
console.log('Select1 options ' + select1.options); // Output is as expected
select1。如果我为select1
提供默认值参数,则value
不会为空:
select1 = Select(title="Level:", value='1', options=['All Levels', '1', '2', '3'], callback=callback)
但是,select1.value
将保持为“1”,无论我将小部件的实际值更改为什么。因此,该值根本没有更新
我感谢你的帮助。。谢谢 我终于成功了。我使用了
js\u on\u change
而不是添加callback
作为小部件参数
在回调函数中,我将小部件名称作为参数传递
1) 定义选择小部件,这是指定默认值所必需的
select1 = Select(title="Level:", value='All Levels', options=['All Levels', '1', '2', '3'])
select2 = Select(...)
2) 定义回调,将小部件显式作为参数传递
callback = CustomJS(args=dict(source=source, ts=true_source, select1=select1, select2=select2), code="""
f = select1.value
g = select2.value
"""
3) 改变
select1.js_on_change('value', callback)
在Bokeh2.0中,小部件上的单个
回调
属性将被删除。js_on_change
是一种新的通用机制,适用于任何模型上的任何属性,在这一点上应该始终是首选。