如何拆分AngularJS中的数据?

时间:2016-12-07 09:23:50

标签: javascript angularjs

JS代码:

$scope.records={"0.19", "C:0.13", "C:0.196|D:0.23"} 
    .filter('filterOutput', function () {
        return function (input) {
            if (input.indexOf(":") != -1) {
                var out = input
                    .split('|')
                    .map(function (v) {
                        var s = v.split(':')
                        return s[0] + ':' + (Number(s[1]) * 100) + "%"
                    })
                    .join()
                return out;
            } else {
                return input * 100 + "%";
            }
        }
    })

HTML code:

<h1 ng-repeat="x in records|filterOutput">{{x}}</h1>

我想要输出:

  

&#34; 19%&#34; &#34; C:13%&#34; &#34; C:19.6%| d:23%&# 34;

但是console.log

  

TypeError:input.indexOf不是函数

我该怎么办? 如何在AngularJS中拆分数据?

2 个答案:

答案 0 :(得分:2)

我修改了你的代码以获得所需的输出。

Html代码

<h1 ng-repeat="x in records track by $index">{{x|filterOutput}}</h1>

变量值

$scope.records=["0.19","C:0.13","C:0.196|D:0.23"];

AngularJS过滤器

.filter('filterOutput', function () {
    return function (input) {
        if (input.indexOf(":") != -1) {
            var out = input
                .split('|')
                .map(function (v) {
                    var s = v.split(':')
                    return s[0] + ':' + (Number(s[1]) * 100) + "%"
                })
                .join('|')
            return out;
        } else {
            return input * 100 + "%";
        }
    }
})

答案 1 :(得分:0)

我已修改您的代码以获得所述的预期结果,请检查以下代码。 为了更好地理解here

,我创造了一个小提琴

<强>控制器:

.controller('FilterController', function ($scope) {
  $scope.records = ["0.19","C:0.13","C:0.196|D:0.23"];
});

过滤:

.filter('filterOutput', function () {
        return function (inputArray) {
         return inputArray.map(function (input){
                 if (input.indexOf(":") != -1) {
                var out = input
                    .split('|')
                    .map(function (v) {
                        var s = v.split(':')
                        return s[0] + ':' + (Number(s[1]) * 100) + "%"
                    })
                    .join('|')
                return out;
            } else {
                return input * 100 + "%";
            }
         });
        }
    });