【问题标题】:Angularjs ng-value sum fieldsAngularjs ng-value总和字段
【发布时间】:2017-03-24 06:46:26
【问题描述】:

嗨,我有这样的输入

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

现在,当我在表单中更改 tbl.Public 或 tbl.Private 的值时,从 js 分配一个值后,它不会影响 tbl.Total 它应该将这两个值相加并将其放入 tbl.Total 字段中。 感谢您的任何帮助和建议。

【问题讨论】:

    标签: angularjs angularjs-ng-value


    【解决方案1】:

    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;
    }
    

    【讨论】:

    • 是的,我知道,我可以通过这种方式解决,但只是想知道我的代码是否有任何解决方案
    • @sanu 既然可以这样解决,那为什么还要使用ng-value呢?有什么优势?
    • 实际上我的表单中有多个总和字段(超过 10 个),所以如果我按照我的风格这样做,我不必在我的 js 中添加额外的函数,这只是原因,无论如何谢谢
    【解决方案2】:

    应该这样防止串接

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-07
      • 2019-06-24
      • 1970-01-01
      • 2019-08-12
      • 1970-01-01
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多