La liaison bidirectionnelle du blazor n'est pas détectée lorsqu'elle est mise à jour à partir de JS.

blazor javascript

Question

J'ai un composant simple lié dans les deux sens:

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

Tout fonctionne bien lorsque j'écris du texte dans la zone de saisie. Mais, si la valeur d'entrée est définie à partir de javascript, blazor n'est pas en mesure de détecter la valeur modifiée.

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

J'ai essayé de soulever des événements sur des éléments tels que 'touche enfoncée', mais la var privée MyVar n'a aucune modification côté client blazor.

Je voudrais renvoyer à Blazor certaines valeurs du client. J'imagine que changer la valeur d'une entrée cachée peut être une solution, mais ne fonctionne pas.

Réponse acceptée

Lorsque vous entrez une valeur dans la zone de saisie, un événement est déclenché. Blazor en a connaissance et met à jour la propriété (MyVar) à laquelle la zone de saisie est liée (c'est également le fonctionnement de la liaison angulaire bidirectionnelle), mais Lorsque vous modifiez la valeur de la zone de saisie à partir de JavaScript, Blazor n'a aucun moyen de connaître cette occurrence.

Mais pourquoi ferais-tu une telle chose?

Pour envoyer des données de JavaScript à Blazor, vous devez définir une méthode publique et statique dans Blazor, annotée avec l'attibute [JSInvokable], et une fonction JavaScript qui appelle cette méthode:

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

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

Lisez plus ici: https://blogs.msdn.microsoft.com/webdev/2018/07/25/blazor-0-5-0-experimental-release-now-available/




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi