gpt4 book ai didi

javascript - 在 AngularJS 中按名字的首字母过滤人员列表

转载 作者:行者123 更新时间:2023-11-30 09:50:37 24 4
gpt4 key购买 nike

我正在尝试通过 AngularJS 转发器中名字的首字母来过滤人员列表。

转发器如下:

<li ng-repeat="person in people | orderBy: 'firstname' | firstLetter:'firstname':'A'">
<a ui-sref="people.details({ personId: {{person.id}} })">
<span class="list__icon"><img src="img/avatar.png"></span>
<span class="list__text">
<span class="list__text__name">{{person.firstname}} <b>{{person.lastname}}</b></span>
</span>
</a>
</li>

所以我按名字排序,然后使用名为 firstLetter 的自定义过滤器:

.filter('firstLetter', function () {
return function (input, letter) {
input = input || [];
var out = [];
input.forEach(function (item) {
if (item.charAt(0).toLowerCase() == letter) {
out.push(item);
}
});
return out;
}
});

但是我得到一个错误,提示 charAt 不是一个函数...我是否错误地将参数传递给了过滤器?

最佳答案

您的 firstLetter 过滤器缺少一个附加参数。第一个参数 input 指的是被重复的数组(在本例中为 people)。第二个参数 letter 实际上应该是过滤器声明的第三个参数。

.filter('firstLetter', function () {
return function (input, key, letter) {
input = input || [];
var out = [];
input.forEach(function (item) {
console.log('item: ', item[key][0].toLowerCase());
console.log('letter: ', letter);
if (item[key][0].toLowerCase() == letter.toLowerCase()) {
out.push(item);
}
});
return out;
}
});;

关于javascript - 在 AngularJS 中按名字的首字母过滤人员列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com