javascript - 根据首字母过滤ng-repeat

标签 javascript angularjs angularjs-ng-repeat angular-filters

在 AngularJS 中,我有一个对象数组。我想显示针对第一个字母过滤的数据。 我用的是下面的方式。 HTML:

<p ng-repeat="film in filmList | startsWith:'C':'title'">{{film.title}}</p>

JS:

.filter('startsWith', () => {
    return (items: any, prefix: any, itemProperty: any) => {
        if (items && items.length) {
            return items.filter((item: any) => {
                var findIn = itemProperty ? item[itemProperty] : item;
                return findIn.toString().indexOf(prefix) === 0;
            });
        }
    };
});`

而且它有效。但现在我的目标是根据两个选择进行过滤(始终针对第一个字母)。例如,过滤标题以“B”或“C”开头的电影。

我编写了以下代码,但它不起作用:

HTML:

 <p ng-repeat="film in filmList | startsWith:'[B, C]':'title'">{{film.title}}</p>

JS:

.filter('startsWith', () => {
    return (items: any, prefixes: any, itemProperty: any) => {
        if (items && items.length) {
        return items.filter((item: any) => {
            var findIn = itemProperty ? item[itemProperty] : item;
            for(let i = 0; i < prefixes.length; i++){
                return findIn.toString().indexOf(prefixes[i]) === 0;
            }
        });
    }
    };
 });

最佳答案

如果您需要更简单的东西而不需要额外的过滤器指令:

var app = angular.module("MyApp", []).controller("MyCtrl", function($scope) {

  $scope.filmList = [{
    title: "Batman"
  }, {
    title: "CastAway"
  }, {
    title: "GodFather"
  }];

  $scope.customfilter = function(film) {
    return film.title.charAt(0) === 'B' || film.title.charAt(0) === 'C';
  };

});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app="MyApp" ng-controller="MyCtrl">
  <p ng-repeat="film in filmList | filter: customfilter">{{film.title}}</p>
</body>

关于javascript - 根据首字母过滤ng-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799194/

相关文章:

javascript - 使用 JQuery 和 ajax post 在表单中选择另一个下拉列表时更改下拉列表值

javascript - 如何计算JavaScript中两个日期之间的天数

javascript - 带有 Bootstrap 模式的 SOFT-KEYBOARD 焦点

javascript - 如何从 Angularjs 中的对象数组中检索数据?

angularjs - 如何使用 ng-repeat 和过滤器隐藏动态表中的某些列?

AngularJS 仅对一个字段进行严格过滤

javascript - IndexedDB:在特定条目上打开游标而不进行迭代

javascript - 如何使用 AngularJS 中另一个模块的函数?

javascript - 在angularjs中的ng-repeat中使用ng-model进行绑定(bind)

javascript - 使用 Angular,我如何在 ng-show 中调用自定义过滤器的结果?