Blazor WebAssembly JSInvokable Binding - 如何更新屏幕?
Blazor WebAssembly JSInvokable Binding - how to update screen?
我有一种情况,我在页面上监听 JS 中的滚动事件,当滚动事件被触发时,它调用一个 C# 方法,该方法是 JSInvokable 以将当前滚动位置存储在一个变量中。
我希望能够在页面更改时显示该值(主要用于开发)。但是 JSInvokable 方法正确地存储了值,但是双向绑定没有更新。
下面是一个伪例子:
<div>Current Scroll Position: @scrollPosition.ToString()</div>
@code{
long scrollPosition = 0;
[JSInvokable("OnScroll")]
public void OnScroll(string index)
{
int.TryParse(index, out var topIndex);
scrollPosition = topIndex;
}
}
我希望当调用 JSInvokable 方法的 JS 更新 scrollPosition 变量时,它也会更新 DOM 条目。
我意识到我可以通过 JS 完成这一切,但只是想尝试绑定作为示例。我没有为此使用任何输入字段,只是在 DOM 中显示并更新了一个变量。
我做错了吗?
谢谢
尝试使用:
InvokeAsync(() => { StateHasChanged(); });
这样做:
[JSInvokable("OnScroll")]
public async Task OnScroll(string index)
{
int.TryParse(index, out var topIndex);
scrollPosition = topIndex;
await InvokeAsync(() => { StateHasChanged(); });
}
我有一种情况,我在页面上监听 JS 中的滚动事件,当滚动事件被触发时,它调用一个 C# 方法,该方法是 JSInvokable 以将当前滚动位置存储在一个变量中。
我希望能够在页面更改时显示该值(主要用于开发)。但是 JSInvokable 方法正确地存储了值,但是双向绑定没有更新。
下面是一个伪例子:
<div>Current Scroll Position: @scrollPosition.ToString()</div>
@code{
long scrollPosition = 0;
[JSInvokable("OnScroll")]
public void OnScroll(string index)
{
int.TryParse(index, out var topIndex);
scrollPosition = topIndex;
}
}
我希望当调用 JSInvokable 方法的 JS 更新 scrollPosition 变量时,它也会更新 DOM 条目。
我意识到我可以通过 JS 完成这一切,但只是想尝试绑定作为示例。我没有为此使用任何输入字段,只是在 DOM 中显示并更新了一个变量。
我做错了吗?
谢谢
尝试使用:
InvokeAsync(() => { StateHasChanged(); });
这样做:
[JSInvokable("OnScroll")]
public async Task OnScroll(string index)
{
int.TryParse(index, out var topIndex);
scrollPosition = topIndex;
await InvokeAsync(() => { StateHasChanged(); });
}