ページに状況があります。
ページに2つの入力と1つのラベルがあります。これらのラベルは、これら2つの入力値の合計を表示する必要があります。
だから私は以下の解決策を試しました:
Sub-Total
<input type="text" ng-model="Property.Field1" />
Tax
<input type="text" ng-model="Property.Field2" />
Total
<label>{{ Property.Field1 + Property.Field2 }}</label>
初めてページが完全に読み込まれると、ラベルに合計が表示されますが、入力に値を入力すると、これらのsoutionはProperty.Field1
のCONCATENATION結果を返しますProperty.Field2
、代わりにsum。
だから私はこれらを試しました:
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>
再び成功しません。
ラベルに表示されている2つの入力の合計結果を取得するにはどうすればよいですか?
実際にコントローラーでparseFloat
メソッドを作成しましたか? Angular式でJSを使用することはできないため、 Angular Expressions vs. JS Expressions を参照してください。
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>
コロンブスの卵は:double negation 。
初期値は(nullではなく)0になり、結果は(暗黙の数値キャストのために連結ではなく)合計になります。
<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>
2つの数値を合計する最も簡単で最良の方法は、HTML5のtype="number"
。これを行うと、入力の値はデフォルトで整数になります。
Sum in Angularjs
<div ng-app>
<input type="text" ng-model="first" />
<input type="text" ng-model="second" />
Sum: {{first*1 + second*1}}
</div>
<!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>
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:..
'AngularJsの2つの数値の合計
<input type="number" ng-model="FirstNumber">
<input type="number" ng-model="SecondNumber">
{{FirstNumber+SecondNumber}}
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 }}
<!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>
入力タグタイプに基づいて、次の2つの方法で実行できます。
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>