IT TIP

Angular 표현식에서 문자열을 Int로 구문 분석하려면 어떻게해야합니까?

itqueen 2020. 10. 27. 23:54
반응형

Angular 표현식에서 문자열을 Int로 구문 분석하려면 어떻게해야합니까?


숫자 문자열 '5'

var num_str = '5';

어떻게 parseInt와 아래 답변을 동시에 수정할 수 있습니까?

{{num_str + 1}}  // 6
{{num_str - 1}}  // 4

parseInt는 Angular 표현식에서 사용할 수 없습니다.

{{parseInt(num_str) - 1}}    

숫자 필터는 더하기와 빼기를 할 수 없습니다.

{{num_str - 1 | number}}

누군가가 유용한 제안이 있으면 대단히 감사하겠습니다


컨트롤러에서 :

$scope.num_str = parseInt(num_str, 10);  // parseInt with radix

각도 필터를 선호합니다.

app.filter('num', function() {
    return function(input) {
      return parseInt(input, 10);
    };
});

그런 다음 dom에서 이것을 사용할 수 있습니다.

{{'10'|num}}

여기에 바이올린이 있습니다.

이것이 도움이 되었기를 바랍니다!


당신은 시도 할 수 있습니다:

{{ 1 * num_str + 1 }}

http://jsfiddle.net/Z32fP/


또 다른 옵션은 다음과 같습니다.

$scope.parseInt = parseInt;

그런 다음 원하는대로 할 수 있습니다.

{{parseInt(num_str)-1}}

각도 표현식은에 액세스 할 수없고 window에만 액세스 할 수 있기 때문 scope입니다.

또한 숫자 필터를 사용하면 표현식을 괄호로 묶는 것이 작동합니다.

{{(num_str-1) | number}}

데모


{{ num_str - 0 }}

... 저를 위해 작동합니다.


위의 어느 것도 나를 위해 일하지 않았습니다.

그러나 이것은 :

{{ (num1_str * 1) + (num2_str * 1) }}

javascript Number 메소드를 사용 하여 숫자로 구문 분석 할 수 있습니다.

var num=Number (num_str);

{{1 * num_str + 1}} 외에 다음과 같이 시도 할 수도 있습니다 (마이너스 먼저) :

{{ num_str - 0 + 1}}

그러나 num_str에 문자가 포함되어 있으면 매우 취약합니다. 따라서 @hassassin이 말한대로 필터를 작성하거나 데이터를 시작한 후 바로 전처리하는 것이 좋습니다.


나는 위에서 언급 한 해결책을 시도했지만 그들 중 누구도 나를 위해 일하지 않았습니다. JSON.parse를 사용했고 작동했습니다.

$http.get('/api/getAdPolling')
  .success(function (data) {
    console.log('success: ' + data.length);

    if (JSON.stringify(data) != "not found") {
        $scope.adPoll = JSON.parse(data);
    }
})
  .error(function (data) {
    console.log('Error: ' + data);
});

별로 좋지는 않지만 재미있는 해킹 : + 대신

{{num_str -- 1 }}

<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app>
  {{'1'--1}}
</div>

참고 URL : https://stackoverflow.com/questions/21398319/how-can-i-parse-string-to-int-in-an-angular-expression

반응형