파싱하는 방법Int in Angular.js
아마 가장 간단한 방법이겠지만 Int in angular로 문자열을 파싱할 수 없었습니다.
내가 하려는 일:
<input type="text" ng-model="num1">
<input type="text" ng-model="num2">
Total: {{num1 + num2}}
이 num1과 num2 값을 어떻게 합칠 수 있습니까?
고마워요!
(적어도 지금은) 사용할 수 없습니다.parseInt
각진 표현들을 직접 평가하지 않기 때문에.문서 인용:
Angular는 자바스크립트의 것을 사용하지 않습니다.
eval()
표현을 평가합니다.대신 앵귤러즈$parse
service는 이러한 식을 처리합니다.각도식은 다음과 같은 전역 변수에 접근할 수 없습니다.
window
,document
아니면location
. 이 제한은 의도적인 것입니다.미묘한 버그의 공통적인 원인인 글로벌 상태로의 우발적인 접근을 방지합니다.
그래서 당신은 a를 정의할 수 있습니다.total()
method를 컨트롤러에 입력한 다음 다음 식을 사용합니다.
// ... somewhere in controller
$scope.total = function() {
return parseInt($scope.num1) + parseInt($scope.num2)
}
// ... in HTML
Total: {{ total() }}
그래도 숫자를 더하는 간단한 작업을 하기에는 부피가 큰 것 같습니다.대안은 결과를 다음과 같이 변환하는 것입니다.-0
op:
Total: {{num1-0 + (num2-0)|number}}
... 하지만 그건 분명히 이해할 수 없을 겁니다Int 값, 숫자에만 캐스트(|number
필터 표시 안 함null
이 배역이 결과적어도NaN
특정한 경우에 적합한 접근법을 선택합니다.
옵션 1(컨트롤러 경유):
angular.controller('numCtrl', function($scope, $window) {
$scope.num = parseInt(num , 10);
}
옵션 2(사용자 정의 필터를 통해):
app.filter('num', function() {
return function(input) {
return parseInt(input, 10);
}
});
{{(num1 | num) + (num2 | num)}}
옵션 3(식을 통해):
컨트롤러에서 이 내용을 먼저 선언합니다.
$scope.parseInt = parseInt;
그러면:
{{parseInt(num1)+parseInt(num2)}}
옵션 4(rainea77ow부터)
{{(num1-0) + (num2-0)}}
<input type="number" string-to-number ng-model="num1">
<input type="number" string-to-number ng-model="num2">
Total: {{num1 + num2}}
js:
parseInt($scope.num1) + parseInt($scope.num2)
스코프 자체 내부에서 작업을 수행합니다.
<script>
angular.controller('MyCtrl', function($scope, $window) {
$scope.num1= 0;
$scope.num2= 1;
$scope.total = $scope.num1 + $scope.num2;
});
</script>
<input type="text" ng-model="num1">
<input type="text" ng-model="num2">
Total: {{total}}
var app = angular.module('myApp', [])
app.controller('MainCtrl', ['$scope', function($scope){
$scope.num1 = 1;
$scope.num2 = 1;
$scope.total = parseInt($scope.num1 + $scope.num2);
}]);
데모: 구문 분석AngularJS가 있는 Int
숫자 추가를 바인딩하는 방법입니다.
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<script>
var app = angular.module("myApp", []);
app.controller("myCtrl", function($scope) {
$scope.total = function() {
return parseInt($scope.num1) + parseInt($scope.num2)
}
})
</script>
<body ng-app='myApp' ng-controller='myCtrl'>
<input type="number" ng-model="num1">
<input type="number" ng-model="num2">
Total:{{num1+num2}}
Total: {{total() }}
</body>
</html>
내부 템플릿이 잘 작동합니다.
<!DOCTYPE html>
<html>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
<body>
<div ng-app="">
<input ng-model="name" value="0">
<p>My first expression: {{ (name-0) + 5 }}</p>
</div>
</body>
</html>
언급URL : https://stackoverflow.com/questions/26293769/how-to-parseint-in-angular-js
'programing' 카테고리의 다른 글
MySQL에 이미지를 저장할 PHP인가요, 아닌가요? (0) | 2023.10.09 |
---|---|
Float 및 Double의 빠른 곱셈/2 나누기(C/C++) (0) | 2023.10.09 |
MariaDB. 연결 재사용 (0) | 2023.10.09 |
wp_query woocmerce를 사용하여 베스트셀러 상품을 얻는 방법 (0) | 2023.10.09 |
자바스크립트에서 고투를 어떻게 사용할 수 있습니까? (0) | 2023.10.09 |