Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-在ng repeat中使用自定义筛选器作为逗号前缀_Angularjs_Angularjs Ng Repeat - Fatal编程技术网

AngularJS-在ng repeat中使用自定义筛选器作为逗号前缀

AngularJS-在ng repeat中使用自定义筛选器作为逗号前缀,angularjs,angularjs-ng-repeat,Angularjs,Angularjs Ng Repeat,如果值为空,则需要删除逗号。如果我有值,则效果良好 在开始或中间出现;但在这种情况下,同样的方法不起作用 需要技巧,但在您的情况下也可以使用,无需过滤器 {{ item.address0 }} <span ng-if="item.address1">, </span> {{ item.address1}}<span ng-if="item.address2">,</span>{{ item.address2}} <span ng-if="i

如果值为空,则需要删除逗号。如果我有值,则效果良好 在开始或中间出现;但在这种情况下,同样的方法不起作用


需要技巧,但在您的情况下也可以使用,无需过滤器

{{ item.address0 }} <span ng-if="item.address1">,
</span> {{ item.address1}}<span ng-if="item.address2">,</span>{{ 
item.address2}}
<span ng-if="item.address3">,</span>{{ item.address3}}
{{item.address0},
{{item.address1}},{
项目.地址2}
,{{item.address3}

我更喜欢编写函数,而不是多次添加过滤器

$scope.mergeAddresses = function(item) {
  var address = item.address0;

  [1,2,3].forEach(function(i) {
    var add = item["address"+i];

    if (!add) return;

    address += (address ? ", " : "") + add;
  });

  if (address) address += ".";

  return address;
}

相反,我会对属性数组进行操作,并使用一对筛选器,一个用于删除空值,另一个用于加入数组

通过这种方式,可以非常明确地显示您要显示的属性

<body ng-controller="MainCtrl">
  <ul>
    <li ng-repeat="item in details">
      {{ [ item.address0, item.address1, item.address2, item.address3] | removeEmpties | joinBy:', ' }}
    </li>
  </ul>
</body>
这是

<body ng-controller="MainCtrl">
  <ul>
    <li ng-repeat="item in details">
      {{ [ item.address0, item.address1, item.address2, item.address3] | removeEmpties | joinBy:', ' }}
    </li>
  </ul>
</body>
app.filter('removeEmpties', function () {
    return function (input,delimiter) {
        return (input || []).filter(function (i) { return !!i; });
    };
});

app.filter('joinBy', function () {
    return function (input,delimiter) {
        return (input || []).join(delimiter || ',');
    };
});