在 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/