44

我的页面上有一个情况。

我的页面中有两个输入和一个标签。这些标签必须显示这两个输入值的总和。

所以我尝试了以下解决方案:

Sub-Total
<input type="text" ng-model="Property.Field1" />
Tax
<input type="text" ng-model="Property.Field2" />
Total
<label>{{ Property.Field1 + Property.Field2  }}</label>

第一次,当页面完全加载时,标签显示总和,但是当我在任何输入中键入一些值时, 这些解决方案给了我一个 CONCATENATION 结果 Property.Field1Property.Field2,而不是总和

所以我尝试了这些:

Sub-Total
<input type="text" ng-model="Property.Field1" />
Tax
<input type="text" ng-model="Property.Field2" />
Total
<label>{{ parseFloat(Property.Field1) + parseFloat(Property.Field2)  }}</label>

再次没有成功。

如何获得标签中显示的两个输入的总和结果?

4

12 回答 12

56

你真的parseFloat在你的控制器中创建了一个方法吗?因为您不能简单地在 Angular 表达式中使用 JS,请参阅Angular 表达式与 JS 表达式

function controller($scope)
{
    $scope.parseFloat = function(value)
    {
        return parseFloat(value);
    }
}

编辑:也应该可以简单地设置对原始函数的引用:

$scope.parseFloat = parseFloat;

我也希望它可以与过滤器一起使用,但不幸的是它不是(可能是一个错误,或者我误解了过滤器的工作原理):

<label>{{ (Property.Field1|number) + (Property.Field2|number) }}</label>

一种解决方法是使用乘法进行强制转换:

<label>{{ (Property.Field1 * 1) + (Property.Field2 * 1) }}</label>
于 2012-10-06T01:28:51.203 回答
54

哥伦布的蛋是:双重否定

初始值为 0(而不是 null),结果将是和(而不是串联,因为隐式数字转换)。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js">
</script>

<div ng-app>  
  <input ng-model="first"  placeholder="First number"  type="text" />
  <input ng-model="second" placeholder="Second number" type="text" />
  <h1> Sum: {{first--second}}! </h1>
</div>

于 2013-11-22T14:57:59.303 回答
10

将两个数字相加的最简单和最好的方法是使用 HTML5 的type="number". 如果这样做,输入的值默认为整数。

更新的小提琴

于 2014-07-18T00:06:51.913 回答
7
Sum in Angularjs
<div ng-app>
        <input type="text" ng-model="first" />
        <input type="text" ng-model="second" />
        Sum: {{first*1 + second*1}}
</div>
于 2015-01-16T09:51:52.063 回答
2

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Angular Addition</title>
    	<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>
    </head>
    <body>
    	<div ng-app="">
    		<p>First Number <input type="number"  ng-model="fnum"></p>
    		<p>Second Number <input type="number" ng-model="snum"></p>
    		<p>Total {{ (snum) + (fnum) }}</p>
    	</div>
    </body>
    </html>

于 2017-06-26T02:34:10.267 回答
1
Simple method for this :
Js file:
var myApp = angular.module('myApp', []);
myApp.controller("myCtrl", function ($scope) {
    $scope.sum = function (num1, num2) {
        $scope.addition = parseInt(num1) + parseInt(num2);
    }
});


html file:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js" type="text/javascript"></script>

<head>
<script src="script.js" type="text/javascript"></script>
    <title></title>
</head>
<body>
<div ng-app="myApp" ng-controller="myCtrl">

Enter First Number:<input type="text" id="num1" ng-model="num1" /><br />
Enter Second Number:<input type="text" id="num2" ng-model="num2" /><br />
<input type="button" value="Sum" ng-click="sum(num1,num2)" />
<input type="text" ng-model="addition" />


</div>
</body>
</html>



///.. the textbox in which u want the output just use ng-model there .. as u can see above:..
于 2016-01-06T10:02:09.220 回答
1

'AngularJs中两个数字的总和

<input type="number" ng-model="FirstNumber">
<input type="number" ng-model="SecondNumber">
{{FirstNumber+SecondNumber}}
于 2019-04-20T04:32:39.800 回答
0
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js"></script>

<body>

 <h2>Demo-Sum of two input value </h2>
   <div ng-app="my_firstapp" ng-controller="myfirst_cntrl">
   Number 1 : <input type="text" ng-model="Property.num1" data-ng-init="Property.num1='1'"><br>
   Number 2 : <input type="text" ng-model="Property.num2" data-ng-init="Property.num2='2'"><br>
   Sum of : {{ parseFloat(Property.num1) + parseFloat(Property.num2) }}

 </div>

<script type="text/javascript">
 var app1 = angular.module('my_firstapp', []);
 app1.controller('myfirst_cntrl', function controller($scope) {
  $scope.parseFloat = function(value) {
    return parseFloat(value);
  }
});
</script>
</body>

</html> 
 <p>Output</p>
<p>Sum of : 3</p>
于 2017-05-30T12:53:15.060 回答
0

对于 Angular(版本 2 及更高版本)尝试执行以下操作

    <p>First Number <input type="number"  [(ngModel)]="fnum"></p>
    <p>Second Number <input type="number" [(ngModel)]="snum"></p>
    <p>Total = {{fnum+snum}}</p>
于 2017-07-26T13:24:34.273 回答
0

根据输入标签类型,我们可以通过这两种方式进行

根据输入标签类型,我们可以通过以下两种方式进行:

于 2018-01-26T15:23:26.473 回答
0
Sub-Total
<input type="text" ng-model="Property.Field1" />
Tax
<input type="text" ng-model="Property.Field2" />
Total
<label>{{ Property.Field1 + Property.Field2  }}</label>

您可以使用双重否定而不是使用直接 +。如果你有 type="number" 这将起作用。对于 type="text" 使用双重否定方法。像这样

 sum:{{ Property.Field1 -- Property.Field2  }}
于 2018-07-19T05:39:48.433 回答
0

您可以使用一元加运算符将变量转换为数字。

{{ (+count1)+(+count2) }}
于 2021-06-22T23:50:08.577 回答