Ich habe eine ng-repeat
, die ein Formular mit einigen Startdaten erstellt. Dann kann der Benutzer diese Daten ändern und die Änderungen sollten im Formular erscheinen. Zuvor werden die vom Benutzer übermittelten Daten von einer anderen Funktion bereinigt, die von einem auf einer Schaltfläche aufgerufen wird.
Alles funktioniert gut unter der Haube (Ich überprüfte meine $scope.some_array
, von der ng-repeat
nimmt die Daten und die neuen Daten sind an der richtigen Stelle), aber nichts passiert auf der Seite.
Das Element:
<li ng-repeat="field in some_array" id="field-{{$index}}">
<div class="{{field.field_color}}">
<button type="button" ng-click="save_field($index)">done</button>
{{field.nice_name}}
</div>
<div id="field-input-{{$index}}">
<input type="text" id="{{field.tag}}" value="{{field.content}}">
<label for="{{field.tag}}">{{field.nice_name}}</label>
</div>
</li>
save_field
Code:
$scope.save_field = function (index) {
console.log($scope.some_array[index]["content"])
var value = $("#field-" + index).children("div").children("input").val()
var name = $scope.some_array[index]["name"]
var clean_value = my_clean(value)
if (norm_value === "") {
return
}
$scope.some_array[index]["content"] = clean_value
console.log($scope.some_array[index]["content"])
}
Auf der Konsole sehe ich:
10.03.16
10/03/16
Welches Recht ist, aber in der Form nur ich 10.03.16
sehen. Ich habe bereits versucht $timeout(function(){$scope.$apply()})
als die letzte Zeile meiner Funktion, aber die Ausgabe ist immer noch die gleiche.
Lassen Sie sich von allem, was jQuery und verwenden Winkel Methodik befreien. Verwenden Sie 'ng-model', um Daten an Eingabefelder zu binden – charlietfl
try ** $ scope. $ EvalAsync (function() {$ scope.some_array [index] [" content "] = clean_value;}); ** – sbaaaang