Javascript 如何在角度表达式中将字符串解析为Int?
数字字符串“5”Javascript 如何在角度表达式中将字符串解析为Int?,javascript,angularjs,Javascript,Angularjs,数字字符串“5” var num_str = '5'; 如何解析int并同时让下面的答案正确 {{num_str + 1}} // 6 {{num_str - 1}} // 4 parseInt不能用于角度表达式中 {{parseInt(num_str) - 1}} 数字过滤器不能进行加减运算 {{num_str - 1 | number}} 如果有人提出有用的建议,我将非常感谢您的控制器: $scope.num_str = parseInt(num_str, 10); /
var num_str = '5';
如何解析int并同时让下面的答案正确
{{num_str + 1}} // 6
{{num_str - 1}} // 4
parseInt不能用于角度表达式中
{{parseInt(num_str) - 1}}
数字过滤器不能进行加减运算
{{num_str - 1 | number}}
如果有人提出有用的建议,我将非常感谢您的控制器:
$scope.num_str = parseInt(num_str, 10); // parseInt with radix
您可以使用javascript方法将其解析为一个数字
var num=Number (num_str);
您可以尝试:
{{ 1 * num_str + 1 }}
我更喜欢使用角度过滤器
app.filter('num', function() {
return function(input) {
return parseInt(input, 10);
};
});
然后您可以在dom中使用它:
{{'10'|num}}
这是一本书
希望这有帮助 除了{{1*num_str+1}} 您也可以这样尝试(先减):
但是它非常脆弱,如果num_str包含字母,那么它将失败。因此,最好像@hassassin所说的那样编写一个过滤器,或者在启动后立即对数据进行预处理。另一个选项是:
$scope.parseInt = parseInt;
然后你可以按照自己的意愿来做:
{{parseInt(num_str)-1}}
这是因为角度表达式无法访问窗口
,只能访问范围
此外,使用数字过滤器,将表达式括在括号中也可以:
{{(num_str-1) | number}}
以上这些都不适合我 但这确实:
{{ (num1_str * 1) + (num2_str * 1) }}
我尝试了上述解决方案,但没有一个对我有效。我使用了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 }}
{{'1'--1}}
您可以创建管道,并在系统中的任何位置使用它
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
// tslint:disable-next-line:pipe-naming
name: 'toNumber',
pure: false }) export class ToNumberPipe implements PipeTransform {
public transform(items: any): any {
if (!items) {
return 0;
}
return parseInt(items, 10);
} }
在HTML中
{{ attr.text | toNumber }}
记住在你的模块文件中将这个管道声明为accessfull。听起来你想要一个自定义过滤器,它们很容易编写一个函数来接收输入并返回输出。记住在javascript中总是指定parseInt的基数。请不要在真正的代码库中添加这样的小技巧。这是行不通的如果数字以千为单位,且字符串中有逗号。这可能会把1000变成一个数字,但不是1000。我同意这是一个黑客行为,但这似乎是唯一有效的解决方案。在大多数情况下,Angular的内置数字过滤器是一种解决方案。投票被否决,因为这是关于angularjs的讨论,而不是纯javascript。有用且符合angularjs的方式。谢谢非常好的解决方案!如果您想按照问题的要求+1或-1,则不起作用。天才解决方案。当num_str=''空字符串时,这仍然有效。我原以为我会得到一个NaN,但效果很棒!很好的解决方案。适用于空字符串和空白字符串;这只是Javascript行为,所以它应该永久工作。仅获取未定义的NaN或字符串不是有效数字。
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
// tslint:disable-next-line:pipe-naming
name: 'toNumber',
pure: false }) export class ToNumberPipe implements PipeTransform {
public transform(items: any): any {
if (!items) {
return 0;
}
return parseInt(items, 10);
} }
{{ attr.text | toNumber }}