JS에서 업데이트 될 때 Blazor 양방향 바인드가 감지되지 않음

blazor javascript

문제

간단한 양방향 바인딩 된 구성 요소가 있습니다.

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

입력 상자에 텍스트를 쓸 때 모두 잘 실행됩니다. 그러나 입력 값이 javascript에서 설정되면 blazor는 변경된 값을 감지 할 수 없습니다.

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

나는 '키 눌 렸음'과 같은 요소에서 이벤트를 발생 시키려고했으나 개인용 변수 인 MyVar는 블레이저 클라이언트 측에서 변경되지 않았습니다.

내가 클라이언트에서 일부 값을 다시 blazor 보내고 싶습니다, 나는 숨겨진 입력 값의 변화가 솔루션 일지 모르지만 작동하지 않을 것 같아요.

수락 된 답변

입력 상자에 값을 입력하면 이벤트가 발생하고 Blazor는이를 인식하고 입력 상자가 바인딩 된 속성 (MyVar)을 업데이트합니다 (이것은 각도 양방향 바인딩이 작동하는 방식과 동일합니다). 그러나 입력 상자의 값을 JavaScript에서 변경하면 Blazor는이 발생에 대해 알 수 없습니다.

하지만, 왜 이럴수가 있니?

JavaScript에서 Blazor로 데이터를 전송하려면 Blazor에서 public 및 static 메서드를 정의하고 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는 합법적입니까? 예, 이유를 알아보십시오.