javascript - 短语内单词的 Angular 过滤器

标签 javascript angularjs angularjs-filter

我正在构建一个 AngularJS 应用程序。我有这个数组:

$scope.products = [
  {name: 'cake (just it!)'},
  {name: 'orange cake'},
  {name: 'cheesecake'}
];

然后我使用 ng-repeat 来显示它。

<li ng-repeat="product in products | filter : { name : word }">
  {{ $product.name }}
</li>

我想添加一个过滤器来搜索短语中每个单词的开头,所以如果我这样做:

$scope.word = 'ca';

它将返回以下数组:

$scope.products = [
  {name: 'cake (just it!)'},
  {name: 'orange cake'}
];

最佳答案

您可以使用如下所述的自定义过滤器来完成此操作

var app = angular.module("sampleApp", []);
app.controller("sampleController", ["$scope",
  function($scope) {
    $scope.products = [{
      name: 'cake (just it!)'
    }, {
      name: 'orange cake'
    }, {
      name: 'cheesecake'
    }, {
      name: 'cheese'
    }, {
      name: 'cheeseca ca'
    }];

  }
]);

app.filter("nameFilter", function() {

  return function(names, contains) {
    return names.filter(function(obj) {
      var expString = '(\\w*\\s|^)' + contains + '';
      var exp = new RegExp(expString, "g");

      if (exp.test(obj.name))
        return name;
    });
  };
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="sampleApp">
  <div ng-controller="sampleController">
    <ul>
      <li ng-repeat="product in products | nameFilter : 'ca' ">
        {{product.name}}
      </li>
    </ul>
  </div>
</div>

关于javascript - 短语内单词的 Angular 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40066734/

相关文章:

javascript - 如何取消订阅 RxJS 5 可观察对象?

javascript - 在 AngularJS 中过滤没有 HTML 标签的文本

javascript - fs.FileRead -> TypeError [ERR_INVALID_ARG_TYPE] : The "path" argument must be one of type string, 缓冲区或 URL。接收类型未定义

javascript - 以 Angular 动态地将元素添加到DOM

javascript - 如何将 result.insertId 分配给我在 query() 函数中传递的函数中的 id?

javascript - Angular-Slick 与 Grunt

javascript - 从 ng-repeat 传递对象

angularjs - 我想在每行之前添加行号,我正在使用 angularJs json 过滤器

javascript - AngularJS 过滤深层属性

javascript - 为什么用 jQuery 在 head 中插入脚本如此奇怪?