web-dev-qa-db-fra.com

Comment analyser String avec Int dans une expression Angular?

Une chaîne numérique '5'

var num_str = '5';

Comment puis-je analyser et laisser les réponses ci-dessous correctes en même temps?

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

parseInt ne peut pas être utilisé dans une expression Angular,

{{parseInt(num_str) - 1}}    

filtre de nombre ne peut pas ajouter et moins,

{{num_str - 1 | number}}

Si quelqu'un a des suggestions utiles, j'apprécierai beaucoup de vous

71
Chen-Tsu Lin

Dans votre contrôleur:

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

Je préfère utiliser un filtre angular.

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

alors vous pouvez utiliser ceci dans le dom:

{{'10'|num}}

Voici un violon .

J'espère que cela a aidé!

77
hassassin

Tu peux essayer:

{{ 1 * num_str + 1 }}

http://jsfiddle.net/Z32fP/

54
CD..

Une autre option serait:

$scope.parseInt = parseInt;

Ensuite, vous pouvez faire cela comme vous le souhaitiez:

{{parseInt(num_str)-1}}

En effet, les expressions angular n'ont pas accès à la variable window, mais uniquement à scope.

De plus, avec le filtre numérique, le fait de placer votre expression entre parenthèses fonctionne comme suit:

{{(num_str-1) | number}}

DÉMO

22
Mosho
{{ num_str - 0 }}

...travaille pour moi.

14
Vadim Panov

Aucun de ce qui précède n'a fonctionné pour moi.

Mais cela a:

{{ (num1_str * 1) + (num2_str * 1) }}
10
D. Kermott

Vous pouvez utiliser la méthode javascript Number pour l’analyser en un nombre,

var num=Number (num_str);
7

J'ai essayé les solutions mentionnées ci-dessus et aucune d'entre elles n'a fonctionné pour moi. J'ai utilisé JSON.parse et cela a fonctionné:

$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);
});
0
webdev5

Pas vraiment génial mais un bidouillage amusant: vous pouvez - au lieu de +

{{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>
0
Daniel Lackmann

Outre {{1 * num_str + 1}}, vous pouvez également essayer comme ceci (moins en premier):

{{ num_str - 0 + 1}}

Mais si c’est très fragile, si num_str contient des lettres, il échouera. Il est donc préférable d’essayer d’écrire un filtre comme @hassassin, ou de prétraiter les données juste après les avoir initialisées.

0
sunderls