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 || ',');
};
});