【问题标题】:Plotly-Dash: How to determine trigger input in client-side callbackPlotly-Dash:如何确定客户端回调中的触发输入
【发布时间】:2021-01-26 02:28:56
【问题描述】:

Dash 的文档描述了在服务器端回调的情况下如何确定哪个输入触发了回调:Advanced Callbacks

有没有办法确定哪个输入触发了客户端回调?

看起来这个功能是在版本 1.13.0 (#1240) 中添加的,但我的浏览器控制台显示 dash_clientside.callback_contextundefined。我正在运行 Dash 版本 1.19.0。

编辑: 我遇到的错误是由于我的 Dash 安装问题。我是通过conda install dash 安装的,Anaconda 主频道上的 Dash 包似乎有问题。从 conda forge 安装解决了问题:conda install -c conda-forge dash。请参阅已接受的答案以获取工作示例。

【问题讨论】:

    标签: javascript python plotly plotly-dash


    【解决方案1】:

    是的,这是可能的。正如您自己注意到的那样,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()
    

    在 Linux Mint 20 上的 python 3.8 上使用 dash==1.18.1 测试。

    【讨论】:

    • 这个问题原来是我在 Anaconda 中安装 Dash 的问题。从 conda forge 而不是主通道安装解决了这个问题。感谢您的工作示例——它对调试很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 2022-07-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多