AngularJS:将数组打印为字符串的简洁方法

abd*_*hab 5 javascript angularjs angular-filters

我有一个以下数组:

"cast": [
      {
        "name": "James Stewart"
      },
      {
        "name": "Kim Novak"
      },
      {
        "name": "Barbara Bel Geddes"
      },
      {
        "name": "Tom Helmore"
      }
    ]
Run Code Online (Sandbox Code Playgroud)

AngularJS中将它格式化为什么是:

James Stewart, Kim Novak, Barbara Bel Geddes, Tom Helmore
Run Code Online (Sandbox Code Playgroud)

有没有办法使用filter或者formatter我可以在模板中巧妙地做到这样:

<font class="authors-string">{{ object.cast | filter/formatter/? }}</font>
Run Code Online (Sandbox Code Playgroud)

我认为在控制器中编写这种简单解析的逻辑会使控制器主体混乱.

谢谢你的关注.

Ori*_*ori 13

这是一个过滤器,从每个数组元素中提取某个prop,然后使用分隔符(demo)连接它们:

app.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 (!angular.isUndefined(prop) ? array.map(function (item) {
            return item[prop];
        }) : array).join(separator);
    };
});
Run Code Online (Sandbox Code Playgroud)

用法:

<p class="authors-string">{{ cast | join:', ':'name' }}</p>
Run Code Online (Sandbox Code Playgroud)

如果是平面数组,则删除第3个参数:

<p class="authors-string">{{ animals | join:', ' }}</p>
Run Code Online (Sandbox Code Playgroud)