AngularJS benutzerdefinierte Anweisung $ Uhr funktioniert nicht

8

Ich erstelle eine Demo-Anwendung mit zwei Controllern, die über einen Dienst kommunizieren, der einige Daten enthält. Es ist eine Art Kontaktbuch. Ein Benutzer kann ausgewählte Person aus der Liste bearbeiten.

Die Daten werden in einem Array von Objekten gespeichert und ich benutze eine benutzerdefinierte Direktive, um einige Manipulationen mit den Texteigenschaften dieser Objekte durchzuführen.

Das Problem besteht darin, dass ein in der Liste mit der benutzerdefinierten Anweisung gerenderter Text bei Modelländerungen (beim Eingeben von Text in Namensfelder) nicht aktualisiert wird, während sich ein Text, der mit {{}} platziert wird, ändert.

Hier ist ein Beispiel, das ein Problem zeigt:

js

%Vor%

html

%Vor%

Arbeitsdemo: Ссылка

Vielleicht ist das Problem mit $ watch, aber alles scheint in Ordnung zu sein. Irgendwelche Vorschläge?

P.S. In der realen App muss ich die Anweisung verwenden, um komplexere Textmanipulationen als nur Verkettungen durchzuführen.

    
VIK 14.04.2014, 01:58
quelle

1 Antwort

31

Setzen Sie den dritten Parameter von $ watch (objectEquality) auf true:

%Vor%

Sie können den Namen der Eigenschaft in Person ändern, um sich daran zu erinnern, dass es sich um das gesamte Objekt und nicht nur um einen String-Namen handelt.

    
j.wittwer 14.04.2014, 02:16
quelle