我是angularJS的新手,我有这个数据
{
"name": "test product",
"slug": "test-product",
"tags": "tag 1, tag 2, tag 3",
"price": "80.00"
}
如何使用基于“标记”的ng-repeat和过滤器以及针对特定字符串的多个值?我试过像
这样的东西
$scope.filterTags = function (item) {
return item.tags == 'tag 1' || item.tags == 'tag 2';
};
<div data-ng-repeat="product in products | filter: filterTags">
<div>{{ product.name }}</div>
</div>
我确实获得了具有该特定标记的产品,但仅当该值以该特定字符串开头时才会生效。假设标签值为“tag 3,tag 2”的产品未被选中,但“tag 2,tag 3”的产品不会被选中。我想要选择里面带有“标签2”的所有产品,我该怎样才能做到这一点?
答案 0 :(得分:1)
HTML:
<div data-ng-repeat="product in products | filter: filterTags">
<div>{{ product.name }}</div>
</div>
JS:
在控制器中:
arrFilterTag= ['tag1','tag2'];
.filter('filterTags', function () {
return function (products, arrFilterTag) {
products.filter(function (val) {
return arrFilterTag.indexOf(val.slug) > -1;
//arrFilterTag['tag1','tag2']
});
return products;
}
})
答案 1 :(得分:0)
tags属性应该是一个Array。如果您无法更改它,可以通过,
分隔符拆分它们,然后使用该数组过滤它应该类似于:
data-ng-repeat="product in products | filter: {tagsArray:'tag 2'}"
(不确定确切的语法)