如何在一个Angularexpression式中将stringparsing为Int?

数字串“5”

var num_str = '5'; 

我怎样才能parseInt并让下面的答案同时正确?

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

parseInt不能用在Angularexpression式中,

 {{parseInt(num_str) - 1}} 

数字filter不能做加减,

 {{num_str - 1 | number}} 

如果有人提出有用的build议,我将非常感谢你

在你的控制器中:

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

我更喜欢使用angular度filter。

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

那么你可以在dom中使用这个:

 {{'10'|num}} 

这是一个小提琴 。

希望这有助于!

你可以试试:

 {{ 1 * num_str + 1 }} 

http://jsfiddle.net/Z32fP/

另一种select是:

 $scope.parseInt = parseInt; 

那么你可以像你想的那样做这个:

 {{parseInt(num_str)-1}} 

这是因为angular度expression式不能访问window ,只能访问scope

另外,使用数字filter,将括号内的expression式包装起来:

 {{(num_str-1) | number}} 

DEMO

以上都没有为我工作。

但是这样做了:

 {{ (num1_str * 1) + (num2_str * 1) }} 
 {{ num_str - 0 }} 

…为我工作。

你可以使用javascript的数字方法来parsing它的一个数字,

 var num=Number (num_str); 

除了{{1 * num_str + 1}}你也可以尝试像这样(减去第一个):

 {{ num_str - 0 + 1}} 

但是它非常脆弱,如果num_str包含字母,那么它将会失败。 所以最好应该尝试用@hassassin说的写一个filter,或者在启动之后立即对数据进行预处理。

我尝试了上面提到的解决scheme,没有一个为我工作。 我用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); });