如何使用 ngTagsInput 来筛选数据



我有可以扩展搜索的代码,但我需要帮助缩小范围。 一个例子是添加标签(颜色,绿色(并仅显示"绿色",而不是所有的颜色和手臂。

这是我的例子:http://codepen.io/stvgale/pen/vxzBXO

app.filter('filterByTags', function () {
return function (items, tags) {
if (!tags || !tags.length) {
  return items;
}
var lowerTags = angular.copy(tags);
angular.forEach(lowerTags, function (tag) {
  tag.text = angular.lowercase(tag.text); 
});
var filtered = [];
(items || []).forEach(function (item) {
  var matches = lowerTags.some(function (tag) {
    return (angular.lowercase(item.data1).indexOf(tag.text) > -1) ||
           (angular.lowercase(item.data2).indexOf(tag.text) > -1);
  });
  if (matches) {
    filtered.push(item);
  }
});
return filtered;
};});

您可以使用正则表达式

加入标签数组以获取搜索文本

var searchtext = lowerTags.map(function(elem){
        return elem.text;
    }).join(" ");

例如,如果您的标签是color,green

var searchtext将是color green

然后你可以用这个文本作为正则表达式模式来检查哪些项目匹配

var patt = new RegExp(searchtext,'i');

并返回匹配的项目

var filtered = [];
    (items || []).forEach(function (item) {
      var matches = lowerTags.some(function (tag) {
        return patt.test(item.data2);
      });
      if (matches) {
        filtered.push(item);
      }
    });
    return filtered;

这是完整示例

相关内容

  • 没有找到相关文章

最新更新