如何在 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)
我是 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)