data-dash-is-loading什么时候触发回调函数?

Joe*_*Joe 5 plotly plotly-dash plotly.js plotly-python

我试图在使用 CSS 属性更新 Dash 图形时显示微调器data-dash-is-loading。

我找到了一个可行的解决方案,但想知道为什么我之前的方法无法获得更多见解。

文档的结构是

html.Div(id="some-container",
         children=[dcc.Graph(id="some-graph",
                             figure=fig)])
Run Code Online (Sandbox Code Playgroud)

这是我尝试过的两个回调函数,一次一个。工作回调函数更新整个容器的子级:

@app.callback(
Output("some-container", "children"),
[Input("some-dropdown", "value")])
Run Code Online (Sandbox Code Playgroud)

不起作用的回调函数是

@app.callback(
Output("some-graph", "figure"),
[Input("some-dropdown", "value")])
Run Code Online (Sandbox Code Playgroud)

嗯,它工作得很好,它按应有的方式更新了图形,但它不会触发data-dash-is-loading.

CSS 代码取自这里:

*[data-dash-is-loading="true"]{
    visibility: hidden;
}
*[data-dash-is-loading="true"]::before{
    content: "Loading...";
    display: inline-block;
    color: magenta;
    visibility: visible;
}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我原因是什么吗?

Yaa*_*ler 0

您可能会覆盖 div 的子级some-container。当第二个回调被触发时,图表可能"some-graph"不再存在。

解决此问题的方法是为图表和更新的项目创建 2 个单独的 div。