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はそのことを認識し、入力ボックスがバインドされているプロパティ(MyVar)を更新します(これはAngular双方向バインディングがどのように動作するかです)。入力ボックスの値をJavaScriptから変更すると、Blazorはこの発生を知る方法がありません。

しかし、ちょっと、なぜあなたはそのようなことをしますか?

JavaScriptからBlazorにデータを送信するには、attibute [JSInvokable]とこのメソッドを呼び出すJavaScript関数で注釈を付けられたBlazorでpublicおよびstaticメソッドを定義します。

[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
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow