python - Dash 确保 url 参数和下拉选择之间的一致性
问题描述
我有一个带有几个选项的下拉菜单,并且 multi=True。我希望选择反映在 URL 中,但我也希望能够使用 URL 选择选项。
dcc.Location(id='url',refresh=False)
...
dcc.Dropdown(id='hp-dropdown',
options=index,
clearable=False,
multi=True
)
当我在下拉列表中进行新选择时,我有一个更新 URL 的回调。
@app.callback(
Output('url','search'),
Input('hp-dropdown','value')
)
def update_url(hps):
if isinstance(hps, str):
return '?ids='+hps
return '?ids=' +','.join(hps)
现在我想做的也是使用 URL 中的值更新下拉列表,就像这样。
@app.callback(
Output('hp-dropdown','value'),
Input('url','search')
)
def update_dropdown(search):
return search[5:].split(',')
但是,由于循环回调,这是不可能的。我可以改用什么模式?这只是我第一次加载页面时的问题。如果我在 URL 中有一个选择,这不会反映在下拉列表中。
解决方案
您可以添加一个按钮或其他需要用户激活的组件,以运行从 URL 更新下拉列表的回调(State
在回调中将 URL 作为 a ,而不是Input
)。然后流程将是按钮-> 选择-> URL。它不再是圆形的,因为按钮不会自动触发。
推荐阅读
- android - 如何从数组编辑文本中获取字符串
- c++ - 为什么会出现分段错误
- javascript - 对 Spring Boot Endpoint 的 Ajax 请求读取 HTTP MSG 失败
- vba - 编辑自动转发的电子邮件以在开始时删除行
- javascript - 如何上传项目中但不属于 Firebase 存储输入的图像?
- ruby-on-rails - 如何使用 Nokogiri 将具有名称空间的节点树插入现有 XML 文件?
- java - 它是一个简单的 Java HashMap,如何在各个存储桶中添加元素
- spring-boot - 如何生成 Map 类型的 RequestBody
使用springdoc swagger open api 3.0? - vb.net - Win10程序上的VB .Net无法运行
- r - 使用具有多个条件的 if 语句替换数据帧中的因子时出现问题(R)