我有一个Dash应用程序,我想要像这样滚动元素
<div id="scrollhere"></div>
<a href="#scrollhere"></a>
我想使用回调而不是<a>
元素。
例如:
@app.callback(
Output('url', 'pathname'),
[Input('map', 'clickData')]
)
def map_click_callback(clicked):
if not clicked:
raise PreventUpdate
return "#scrollhere"
这可能吗?
答案 0 :(得分:0)
我遇到了类似的问题,并通过客户端回调解决了这个问题,虽然不完全相同,但与此类似:
app.clientside_callback(
"""
function(clicks, elemid) {
document.getElementById(elemid).scrollIntoView({
behavior: 'smooth'
});
}
""",
Output('garbage-output-0', 'children'),
[Input('button-to-scroll', 'n_clicks')],
[State('target-element', 'id')]
)
garbage-output-0这里仅仅是因为Dash要求您将某些东西作为输出。 我非常确定,但是一定有更好的方法,例如创建一个组件,该组件执行与我发布的JS代码类似的JS代码,但是可以在服务器端调用。