2014-04-05 13 views
6

Ich habe eine Eingabe-Anweisung, die Benutzer rückgängig machen sollte.Angularjs - Set Ansicht Wert wird nicht aktualisiert Anzeige

Geben Sie den Wert speichert eine Funktion, Esc Abbrechen Änderungen aus dem letzten Speichern.

Für die Esc keypress Ereignis i ngmodel.$setViewValue(scope.last_saved_value) bin mit aber die Eingang nicht aktualisieren. Ich weiß von der docs, dass diese Funktion $digest nicht auslöst, also setze ich es in $apply, aber es funktioniert immer noch nicht.

JSBIN example

Antwort

2

ich in der Regel beide enthalten und erfordern die ngModel:

app.directive('cancelableInput', function($timeout) { 
    return { 
    restrict : "A", 
    require : 'ngModel', 
    scope: { 
     ngModel: '=?' 
    }, 

Dann, wenn Sie den Modellwert ändern möchten, und haben es aktualisieren, können Sie einfach tun:

scope.$apply(function() { 
    scope.ngModel = scope.last_saved_value; 
}); 
+0

Hey @dave. Ich denke, der Schlüssel hier ist die Zwei-Wege-Bindung? ich meine, ich war wahrscheinlich (obwohl es wirklich keinen Sinn macht), eine lokale Kopie des ng-Modells zu aktualisieren? – haki

+0

arbeitete für mich, danke @dave – melloc

34

Versuchen Sie ngmodel.$render(); anrufen, nachdem Sie $setViewValue tun, sollte es helfen.

+1

Dies half mir, ein Problem zu lösen. – MBielski

+3

Dies sollte die akzeptierte Antwort sein – scniro

+0

Ich dachte, die '$ render'-Methode sollte vom Entwickler implementiert werden, aber ich denke, das gilt nur für benutzerdefinierte Steuerelemente. Inputs (type = "checkbox" 'und' type = "text" 'in meinem Fall) funktionieren perfekt. Vielen Dank. –

Verwandte Themen