2017-03-11 1 views
0

Ich erstelle ein Bearbeitungsformular und übergebe ein Objekt mit 30 Schlüsselwertpaaren. Ich verwende dann ng-repeat, um Eingabefelder eines Formulars zu füllen. Das gesamte Formular wird gut dargestellt und mit den übergebenen Schlüsselwerten angezeigt. Ich kann auch den Wert eines beliebigen Eingabefeldes ändern. Aber wenn ich das Formular absende, nimmt es das alte Scope-Objekt, das ich anfangs im Formular übergeben habe, zurück und hinterlasse meine Änderungen. Ich muss mein geändertes Objekt jetzt einreichen. Wie geht das? Ich habe viel gesucht, kann aber keine Lösung finden.Wie aktualisiere ich den Gültigkeitsbereich des Formulars Submit, wenn sich der ng-Modellwert ändert?

var app = angular.module("customerModule", []); 
 
app.controller('crudController', function($scope, $http) { 
 
    $scope.Customers = //object from Ap with almost 30 key,values 
 

 
    $scope.edit = function() { 
 
     console.log($scope.Customers); 
 
     //the above line prints the API called object where as I am editing the values of ng-model in my form. and I need the form submitted values 
 
    } 
 

 

 
});
<div ng-app="customerModule" ng-controller="crudController"> 
 
    <form name="as" ng-submit="edit()"> 
 
    <ul> 
 

 
     <li ng-repeat="(key, val) in Customers " ng-hide="(key=='total' || key=='paid' || key=='customfields' || key=='owing')" ng-if="key!='customfields'"> 
 

 
     <label class="label"> {{key}}</label> <input type="text" ng-model="val" /> 
 
     </li> 
 

 
     <li ng-repeat="(key, val) in Customers.customfields"> 
 
     <label class="label"> {{key}}</label> <input type="text" ng-model="val" /> 
 

 
     </li> 
 
     <button type="submit"><i class="fa fa-plus-circle" aria-hidden="true"></i><span> Edit Customer</span></button> 
 
     <ul> 
 

 
    </form> 
 

 
</div>

Antwort

1

Verwendung ng-model="Customer[key]".

Sie verwenden die lokale Variable val, die auf den Wert verweist. Das ist im Grunde aquivalent zu tun

var val = Custom['foo']; 
val = 'newValue'; 

Das wird nicht den Wert von Custom['foo'] ändern, nicht wahr?

Aber der folgende Wille:

Custom['foo'] = 'newValue'; 
Verwandte Themen