如何在 Dash for Julia 中使用模式匹配回调

How to use pattern matching callbacks in Dash for Julia

我是 julia 的新手,但对 Dash 并不陌生;我正在尝试使用 Dash for julia 构建我的第一个应用程序,但我似乎无法使模式匹配回调正常工作。这是给我带来麻烦的代码部分:

callback!(
    app,
    Output((type= "filter_", index= ALL), "options"),
    Input("inputs", "data"),
    State((type= "filter_", index= ALL), "value"),
) do inputs, filters
    list_outs = []
    list_vals = []
    for i in 1:length(filters)
        push!(list_outs, [(label= input, value= input) for input in inputs])
    end
    return list_outs
end

我在这里要做的是使用数据集的可用输入(已存储在“输入”中)来设置过滤器的选项,创建与下拉列表一样多的选项集。

我猜这里的问题是我返回的输出格式:它说“{"index":["ALL"],"type":"filter_ 的输出值数量无效"}.options.Expected 3, got 1"

遗憾的是,我发现关于如何使用 julia 的模式匹配回调没有任何用处;我尝试将输出作为数组和元组传递,但无济于事。

欢迎任何帮助,谢谢大家!

这是与以下事实相关的错误:如果结果是单个 Output,回调输出会自动表示为返回的数组,以进行统一的进一步处理。即,在您的情况下,如 [list_outs]。具有匹配模式的 Output 也被视为一个单独的事实是我的错误,我添加了 the issue 并尝试在不久的将来修复它。 现在您可以通过使用 Output 作为数组来解决这个问题:

using Dash
using DashHtmlComponents
using DashCoreComponents
app = dash()

app.layout = html_div() do
    dcc_input(id = "input", value = "A,B,C"),
    dcc_dropdown(id = (type="filter_", index = 1)),
    dcc_dropdown(id = (type="filter_", index = 2)),
    dcc_dropdown(id = (type="filter_", index = 3)),
    dcc_dropdown(id = (type="filter_", index = 4))
end
callback!(
    app,
    [Output((type= "filter_", index= ALL), "options")], #This is multiple output in explicitly form
    Input("input", "value"),
    State((type= "filter_", index= ALL), "value"),
) do input, filters
    inputs = split(input, ",")
    list_outs = []
    list_vals = []
    for i in 1:length(filters)
        push!(list_outs, [(label= input, value= input) for input in inputs])
    end
    return [list_outs] # Accordingly, we return the result inside an additional array
end

run_server(app, debug = true)