2016-11-10 6 views
0

Hallo, ich habe Eingänge wie diesesAngularJS ng-Wert Summe Felder

<input type="text" ng-model="tbl.Public"> 
<input type="text" ng-model="tbl.Private"> 
<input type="text" ng-value="tbl.Public--tbl.Private" ng-model="tbl.Total"> 

die obige Form Willen adaequat es wird die öffentlichen und privaten Wert summieren und es in tbl.Total Feld setzen. Mein Problem ist im Bearbeitungsformular, wo Wert von tbl.Total, tbl.Public, tbl.Private aus der Datenbank zugewiesen werden.

js

$scope.tbl.Public=10; 
$scope.tbl.Private=25; 
$scope.tbl.Total=35; 

jetzt, nachdem einen Wert von js zuweisen, wenn ich Wert von tbl.Public oder tbl.Private in Form ändern wird es keine tbl.Total beeinflussen sollte es die zwei Werte summieren und es ausdrückte in tbl.Gesamtfeld. Vielen Dank für Ihre Hilfe und Anregungen.

Antwort

2

ng-value wird normalerweise für Radiobuttons und Optionselemente verwendet, es passt nicht gut zu Ihrem Anwendungsfall.

Eine bessere Sache wäre die Implementierung einer updateTotal() Funktion kombiniert mit ng-change. Ich würde auch empfehlen, Ihre input Typen zu number zu ändern, also erlauben Sie Benutzern nicht, Text zu summen.

<input type="number" ng-model="tbl.Public" ng-change="updateTotal();"> 
<input type="number" ng-model="tbl.Private" ng-change="updateTotal();"> 
<input type="number" ng-model="tbl.Total"> 

In Ihrem Controller:

$scope.updateTotal = function() { 
    $scope.tbl.Total = $scope.tbl.Public + $scope.tbl.Private; 
} 
+0

zu verhindern, ja, ich weiß, ich auf diese Weise lösen kann, sondern nur gefragt, ob es eine ist Lösung für meinen Code – sanu

+0

@sanu Wenn Sie es auf diese Weise lösen können, warum möchten Sie 'ng-Wert' dann verwenden? Was ist der Vorteil? –

+0

eigentlich habe ich mehrere Summenfelder in meiner Form (mehr als 10), also wenn ich in meinem Stil mache, muss ich keine zusätzlichen Funktionen in meinem js hinzufügen, das ist nur der Grund, danke trotzdem – sanu

0

es so sein sollte concatenate

$scope.updateTotal = function() { 
    var Public = Number($scope.tbl.Public || 0); 
    var Private = Number($scope.tbl.Private || 0); 
    $scope.tbl.Total = Public + Private; 
} 
Verwandte Themen