Как я могу разделить String на Int в выражении Angular?

Строка номера '5'

var num_str = '5';

Как я могу parseInt и дать ниже ответы правильно в одно и то же время?

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

parseInt не может использоваться в выражении Angular,

{{parseInt(num_str) - 1}}    

фильтр номера не может добавлять и минус,

{{num_str - 1 | number}}

Если у кого-то есть полезное предложение, я буду очень благодарен вам.

Ответ 1

В вашем контроллере:

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

Ответ 2

Я предпочитаю использовать фильтр angular.

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

то вы можете использовать это в dom:

{{'10'|num}}

Вот fiddle.

Надеюсь, это помогло!

Ответ 4

Другой вариант:

$scope.parseInt = parseInt;

Тогда вы можете сделать это так, как хотите:

{{parseInt(num_str)-1}}

Это связано с тем, что выражения angular не имеют доступа к window, только к scope.

Кроме того, с числовым фильтром обертывание выражения в круглых скобках работает:

{{(num_str-1) | number}}

DEMO

Ответ 5

{{ num_str - 0 }}

... работает для меня.

Ответ 6

Ни одно из вышеперечисленных не работало для меня.

Но это произошло:

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

Ответ 7

Вы можете использовать метод javascript Number, чтобы разобрать его в число,

var num=Number (num_str);

Ответ 8

Кроме {{1 * num_str + 1}} Вы также можете попробовать это (минус сначала):

{{ num_str - 0 + 1}}

Но он очень хрупкий, если num_str содержит буквы, то он будет терпеть неудачу. Поэтому лучше попытаться написать фильтр, как сказал @hassassin, или предварительно обработать данные сразу после его запуска.

Ответ 9

Я попробовал решения, упомянутые выше, и никто из них не работал у меня. Я использовал 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);
});

Ответ 10

Не очень хорошо, но смешной взлом: вы можете - вместо +

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