從JS更新時未檢測到Blazor雙向綁定

blazor javascript

我有一個簡單的雙向綁定組件:

<input type="text"  id="myInput" bind="@MyVar" />
...
@functions {
    private string MyVar { get; set; } = "foo";

當我在輸入框上寫文本時,所有運行正常。但是,如果輸入值是從javascript設置的,則blazor無法檢測到更改的值。

document.getElementById('myInput').value='Random Value';

我嘗試在'按下'等元素上引發一些事件,但是私有var MyVar在blazor客戶端沒有變化。

我想從客戶端發回一些值,我想改變隱藏輸入的值可能是解決方案,但不能正常工作。

一般承認的答案

當你在輸入框中輸入一個值時,會引發一個事件,因此Blazor知道這一點,並且它更新了輸入框綁定到的屬性(MyVar)(這就是Angular雙向綁定的工作方式),但是當您從JavaScript更改輸入框的值時,Blazor無法知道此事件。

但是,嘿,你為什麼要做這樣的事情?

要將數據從JavaScript發送到Blazor,您需要在Blazor中定義一個公共和靜態方法,使用attibute [JSInvokable]註釋,以及一個調用此方法的JavaScript函數:

[JSInvokable]
public static Task SendMessageAsync(string message)
{
    // Do something with message
}

DotNet.invokeMethodAsync(assemblyName, 'SendMessageAsync', "Hello Blazor");

點擊此處了解更多信息: https//blogs.msdn.microsoft.com/webdev/2018/07/25/blazor-0-5-0-experimental-release-now-available/



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因