Python 确保url参数和下拉选择之间的一致性
我有一个带有几个选项的下拉列表,multi=True。我希望选择反映在URL中,但我也希望能够使用URL选择选项Python 确保url参数和下拉选择之间的一致性,python,plotly-dash,Python,Plotly Dash,我有一个带有几个选项的下拉列表,multi=True。我希望选择反映在URL中,但我也希望能够使用URL选择选项 dcc.Location(id='url',refresh=False) ... dcc.Dropdown(id='hp-dropdown', options=index, clearable=False, multi=True ) 当我在下拉列表
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更新下拉列表的回调(URL作为回调中的
状态
,而不是输入
)。然后,流程将是按钮->选择->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)