Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在角度表达式中将字符串解析为Int?_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在角度表达式中将字符串解析为Int?

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); /

数字字符串“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);  // 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 }}