将AngularJS数组显示给人类'可读字符串

时间:2016-11-21 12:16:09

标签: javascript angularjs arrays string-formatting

我输出了一个变量,它是我视图中的一个数组,当它显示的值如下: -

Inbound bound posts will contain ["phone", "car"]

如何更改此设置以人类格式显示,例如。 (如下)

入境邮件将包含电话,汽车

5 个答案:

答案 0 :(得分:4)

如果您只想列出数组,可以使用join

arr = ["phone", "car"];
arr.join(", ");

输出:“电话,汽车”。

答案 1 :(得分:2)

使数组显示为一系列文本

Inbound bound posts will contain {{ ["phone", "car"].join(', ') }}

答案 2 :(得分:1)

在控制器上创建一个方法来处理array-> string:

let arrayToWrite = ['phone', 'car'];
aToS() {
  return arrayToWrite.join(' ');
}

然后你的观点:

Inbound bound posts will contain {{ vm.aToS() }}

(假设'vm'是您的控制器,按照标准惯例)

如果需要,您也可以将数组输入到方法中,而不是在方法之外定义数组。

答案 3 :(得分:1)

有很多选择。你也可以这样做:

    <div>
      Inbound bound posts will contain
      <span ng-repeat="obj in objects">{{obj}} </span>
    </div>

并在您的控制器中保留范围列表:

$scope.objects = ["car", "phone"];

答案 4 :(得分:1)

您可以使用过滤器:

myApp.filter('join', function () {
    return function join(array, separator, prop) {
        if (!Array.isArray(array)) {
            return array; // if not array return original - can also throw error
        }

        return (!!prop ? array.map(function (item) {
            return item[prop];
        }) : array).join(separator);
    };
});

在你的HTML中,只需写下:

<div ng-controller="MyCtrl">
  Inbound bound posts will contain {{things | join: ', ' }}
</div>

一个有效的JSFiddle:http://jsfiddle.net/Lvc0u55v/12345/