setViewValue in der Direktive zur Eingabe, die den tatsächlich sichtbaren Eingabewert nicht aktualisiert

Ich habe fast zwei Tage damit gekämpft. Ich hoffe ihr könnt mir helfen.

Zusammenfassung
Ich habe Probleme, den Anzeigewert einiger Eingabefelder programmgesteuert festzulegen.
Ich habe ein Formular mit Eingaben, deren Werte gespeichert werden, bevor das Formular entfernt wird (mehrere Elemente und mehrere Formulare möglich, Benutzer kann ein Formular schließen und später erneut öffnen). Beim erneuten Öffnen des Formulars möchte ich die vorherigen Ansichtswerte wiederherstellen (Hauptgrund ist, dass auch die ungültigen Ansichtswerte zurückgegeben werden, die nicht im Modell gespeichert wurden). Das geht nicht.

Wenn ich ctrl. $ SetViewValue (previousValue) aufrufe, wird das Modell (sichtbar) aktualisiert (falls gültig), die Ansichtswerte von formControl (während des Debuggens in der Konsole) werden ebenfalls geändert, aber es wird nicht tatsächlich gerendert die Eingabefelder. Ich verstehe nicht warum:

Ich habe das Problem auf diese Geige reduziert:
http: //jsfiddle.net/g0mjk750/1

Javascript

var app = angular.module('App', [])

    function Controller($scope) {
        $scope.form = {
            userContent: 'initial content'
        }
    }
app.controller('Controller', Controller);
app.directive('resetOnBlur', function () {
    return {
        restrict: 'A',
        require: 'ngModel',
        link: function (scope, element, attrs, ngModel) {
            element.bind('blur', function () {
                console.log(ngModel);
                scope.$apply(setAnotherValue);
            });
            function setAnotherValue() {
                ngModel.$setViewValue("I'm a new value of the model. I've been set using the setViewValue method");
            }
        }
    };
});

Html

<form name="myForm" ng-app="App" ng-controller="Controller" class="form">
    Text: {{form.userContent}}
    <hr />
    If you remove the text, "Required!" will be displayed.<br/>
    If you change the input value, the text will update.<br/>
    If you blur, the text will update, but the (visible) input value not.
    <hr />
    <input class="input" type="text" ng-model="form.userContent" name="userContent" reset-on-blur required></textarea>
    <span ng-show="myForm.userContent.$error.required">Required!</span>
</form>

Ich hoffe, ihr könnt mir erklären, warum das nicht funktioniert und wie man das behebt ...

Antworten auf die Frage(2)

Ihre Antwort auf die Frage