javascript - Plotly-Dash:如何确定客户端回调中的触发输入
问题描述
Dash 的文档描述了在服务器端回调的情况下如何确定哪个输入触发了回调:高级回调。
有没有办法确定哪个输入触发了客户端回调?
看起来这个功能是在版本 1.13.0 ( #1240 ) 中添加的,但我的浏览器控制台显示dash_clientside.callback_context
是undefined
. 我正在运行 Dash 版本 1.19.0。
编辑:我遇到的错误是由于我的 Dash 安装问题。我是通过 安装conda install dash
的,Anaconda 主频道上的 Dash 包似乎有问题。从 conda forge 安装解决了问题:conda install -c conda-forge dash
. 有关工作示例,请参阅接受的答案。
解决方案
是的,这是可能的。正如您自己注意到的那样,该信息在dash_clientside.callback_context
变量中可用。这是一个小例子,
import dash_html_components as html
from dash import Dash
from dash.dependencies import Output, Input
# Create app.
app = Dash(prevent_initial_callbacks=True)
app.layout = html.Div([
html.Button("Button 1", id="btn1"), html.Button("Button 2", id="btn2"), html.Div(id="log")
])
app.clientside_callback(
"""
function(x, y){
const triggered = dash_clientside.callback_context.triggered.map(t => t.prop_id);
return "Hello from [" + triggered + "]";
}
""", Output("log", "children"), [Input("btn1", "n_clicks"), Input("btn2", "n_clicks")])
if __name__ == '__main__':
app.run_server()
dash==1.18.1
在 Linux Mint 20 上的 python 3.8 上进行了测试。
推荐阅读
- c++ - 两个堆分配是否比调用 std::string 填充 ctor 更昂贵?
- python - Phemex CCXT Python 为订单添加止损和获利
- python - ValueError:Layer Discriminator 需要 1 个输入,但它接收到 2 个输入张量
- c++ - c++ makefile找不到目录
- c++ - 如何区分C++中的两个派生类
- r - R:将列拆分为两列
- javascript - Javascript - 如何获取触发事件的元素
- database - 如何使用无状态服务跟踪随机数
- jquery - jQuery 返回 $.getJSON 值
- arrays - 用于迭代选择矩阵列的 Octave 或 Matlab 代码