在 Angular 过滤器表达式中使用竖线字符

Use the pipe character in an Angular Filter expression

我想使用'|' character in an Angular 1 Filter expression lie

{{ ctrl.items | map: 'name|id' | join: ',' }}

我可以使用某种字符转义吗?我知道 |字符用于调用过滤器,但我想用它来连接两个属性 'name' 和 'id'.

是的,我知道我可以在控制器中编写一个函数来连接这两个属性,但我很想知道是否可以在表达式中执行此操作。

PS:过滤器映射和连接来自此 repo:https://github.com/a8m/angular-filter

更新:

在控制器中:

ctrl.items = [{ name: 'ape', id:1 }, { name: 'john', id:2 }];

在模板中:

<input type='hidden' value="{{ ctrl.items | map: 'name|id' | join: ',' }}" >

预期输出:

<input type='hidden' value="ape|1,john|2" >

您必须创建一个自定义过滤器来形成您提到的值。

var app = angular.module('myApp', []);
app.filter('map', function() {
  return function(input, propName) {
  var prop = propName.split("|");
  return input.map(function(item) {
  return item[prop[0]] +"|"+ item[prop[1]];
   });
  };
});

然后输入文本

<input type="text" value="{{(ctrl.items | map:'name|id').join(',')}}"/>

请找到有效的 Plnkr Working Plnkr