2016-11-10 3 views
0

Привет у меня есть входы, как этотAngularjs нг-значение поле суммы

<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"> 

выше форма будет работать отлично будет подводить государственную и частное значение и поместить его в поле tbl.Total. Моя проблема в форме редактирования, где значение tbl.Total, tbl.Public, tbl.Private назначаются из базы данных.

JS

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

теперь после присвоения значения из JS, когда я изменить значение tbl.Public или tbl.Private в виде она не влияет на tbl.Total она должна суммировать два значения и положить его в tbl.Total field. Благодарим вас за любую помощь и предложение.

ответ

2

ng-value обычно используется на радиообъективах и дополнительных элементах, это не подходит для вашего случая использования.

Лучше всего было бы реализовать функцию updateTotal() в сочетании с ng-change. Я также рекомендовал бы изменить типы input на number, чтобы вы не разрешали пользователям суммировать текст.

<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"> 

В контроллере:

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

да я знаю, я могу решить таким образом, но просто интересно, если есть какие-либо решение для моего кода – sanu

+0

@sanu Если вы можете решить его таким образом, почему вы хотите использовать 'ng-value', то? В чем преимущество? –

+0

На самом деле у меня есть несколько полей сумм в моей форме (более 10), поэтому, если я делаю это в своем стиле, мне не нужно добавлять дополнительные функции в js, это только причина, спасибо в любом случае – sanu

0

Это должно быть так, чтобы предотвратить от конкатенации

$scope.updateTotal = function() { 
    var Public = Number($scope.tbl.Public || 0); 
    var Private = Number($scope.tbl.Private || 0); 
    $scope.tbl.Total = Public + Private; 
} 
Смежные вопросы