Zwei-Wege-Bindung in einem benutzerdefinierten Aurelia-Attribut

8
  

UPDATE: Es sieht so aus, als wäre dies ein bekannter Fehler: Ссылка
  Ich verlasse es hier zu Referenz- / Durchsuchungszwecken.

Der Code:

input-mask.ts (Der vollständige Code ist hier zu sehen)

> %Vor%

carrier.html

%Vor%
  

UPDATE: Um diesen Fehler zu umgehen, wechseln Sie zu unmasked-value.two-way und die Bindung funktioniert.

carrier.ts

%Vor%

Das Problem:

Die Daten scheinen in die Variable @bindable zu fließen. Wenn sich die Maske ändert, wird der Wert im benutzerdefinierten Attribut geändert.

Aber es scheint nicht zu fließen, wenn Änderungen innerhalb des custom-Attributs vorgenommen werden.

Beispielszenario: Nachdem ich den Wert im Eingabefeld bearbeitet und die Eingabe beendet habe, wird das focusout -Ereignis ausgelöst und die Konsolenanweisung, die angibt, dass der unmaskierte Wert innerhalb des benutzerdefinierten Attributs aktualisiert wurde, druckt:

  

unmaskedValue wurde innerhalb des benutzerdefinierten Attributs

aktualisiert

Aber (wenn die Eingabe den Fokus verliert), wird die Konsolenanweisung, die besagt, dass der airbill in der Datei carrier.ts aktualisiert wurde, nicht ausgelöst, wenn ich das Eingabefeld verlasse:

  

Das feuert nicht:
  console.log ('Airbill war gesetzt!');

Dies scheint mir zu zeigen, dass die Bindung nicht wirklich zweiseitig ist.

Die Frage:

Wie kann ich diese Bindung in beide Richtungen herstellen? Wenn ich also unmaskedValue innerhalb des custom-Attributs aktualisiere, wird der gebundene Wert im Ansichtsmodell aktualisiert?

Hinweis: Als Workaround konnte ich unmasked-value.bind als Methodenaufruf ( on-unmasked-value-changed.call="onUnmaskedValueChanged($event) ) ändern und den Wert in dieser Methode aktualisieren. Also brauche ich das nicht zu arbeiten. Aber ich würde gerne wissen, ob es für zukünftige Verwendung möglich ist.

    
Vaccano 26.02.2016, 17:40
quelle

2 Antworten

0

Dieser bekannte Fehler wurde am 15. März 2016 behoben und geschlossen Ссылка

    
Alexander Taran 07.03.2018 13:21
quelle
-1

Versuchen Sie, die Variable unmaskedValue mit dem Standardwert zu initialisieren. Versuche es mit null, undefiniert, '' und so weiter. Ich habe das schon einmal gemacht, aber ich erinnere mich nicht daran, in welcher Version (sicherlich war es Beta)

    
d.brezoev 10.08.2016 11:38
quelle