在角度过滤器表达式中使用管道字符

时间:2016-09-22 12:14:58

标签: javascript angularjs angular-filters

我想使用' |' Angular 1 Filter表达式中的字符

updatePage(homeSegment) {
  if (homeSegment === 'map') {
    this.loadMap();
  }
}

我可以使用哪种角色逃脱?我知道| character用于调用Filter,但是我想用它来连接两个属性" name'和' id'。

是的,我知道我可以在控制器中编写一个函数来连接这两个属性,但是如果有一种方法可以在表达式中执行此操作,那么我很感兴趣。

PS:过滤器地图和联接来自此仓库:https://github.com/a8m/angular-filter

更新

在控制器中:

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

在模板中:

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

预期产出:

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

1 个答案:

答案 0 :(得分: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