你能解释一下角度过滤器过程如何使用此代码吗?



我不明白为什么 .name 发生在模型中而不是过滤器中。当我创建 nameText.name 并将其绑定到我的数据时,我不明白幕后发生了什么。我的过滤器实际工作情况如何?

<input type="text" data-ng-model="nameText.name" />
<input type="text" data-ng-model="nameText.city" />
<li data-ng-repeat="customer in customers | filter:nameText>
<script>
function FilteringController($scope) {
$scope.customers = [
{ name: 'Dave Jones', city: 'Phoenix' },
{ name: 'Jamie Riley', city: 'Phoenix' },
{ name: 'Heedy Wahlin', city: 'Chandler' },
{ name: 'Thomas Winter', city: 'Seattle' }
];
</script>

>在本例中nameText是一个具有属性namecity的对象。这些属性由输入字段填充。您正在使用对象过滤列表。在这种情况下,Angular 所做的是使用具有匹配名称的属性过滤列表中的对象。因此,例如,如果nameText.cityPhoenix,则会筛选列表中的项,以便仅保留具有city属性Phoenix项。这适用于name,两者可以组合使用。

更新以回答评论中的问题:对于确切的实现,我建议查看 Angular 源代码。此处是使用对象的过滤器的特定情况。这大致的作用是获取作为过滤器传入的对象的所有属性(在您的情况下nameText)。然后,它会浏览对象列表,以筛选并选择具有与要搜索的属性匹配的属性的所有对象。在我引用的源代码中,您还可以看到如何处理您可能传递的其他类型的搜索过滤器。

最新更新