gpt4 book ai didi

javascript - ng-repeat 按功能过滤

转载 作者:行者123 更新时间:2023-11-28 18:53:01 24 4
gpt4 key购买 nike

我正在尝试在 ng-repeat 上使用过滤器,该过滤器是一个传入参数的函数,但过滤器似乎不起作用。

这是我正在使用的过滤功能。它比较 2 个数组以查看每个数组中的匹配项,然后返回 true 或 false。

$scope.ifinfav1 = function(f){
return e.indexOf(f) !== -1;
};

这是我使用过滤器的 HTML。

<ion-view view-title="Favourites">
<ion-content>
<ion-list>
<ion-item id="fav" class="item-icon-right" collection-repeat="office in offices|filter:ifinfav1(office.id)" ng-controller="ModalCtrl" ng-click="openModal(office.id); lastview(office.id);">
<p>{{office.id}}</p>
<p id="details">{{office.LocAddressLine1 + ", " + office.LocAddressLine2 + ", " + office.LocCity + ", " + office.LocCountryDescription + ", " + office.LocZipPostalCode}}</p>
<i ng-class="{'icon ion-android-star': liked(office.id), 'icon ion-android-star-outline': liked(office.id)}" ng-click="togglefav(office.id); $event.stopPropagation();"></i>
</ion-item>
</ion-list>
</ion-content>
</ion-view>

最佳答案

无法选择将哪些参数传递给用作过滤器谓词的函数。
也就是说,您可以这样做:

<p ng-repeat="office in offices | filter:isInFavourites(offices.id)">

您只能指定函数本身,而不能指定调用时传递给它的参数。因此,只有以下内容有效:

<p ng-repeat="office in offices | filter:isInFavourites">

AngularJS中所指定documentation for filter (link) :

The function is called for each element of the array, with the element, its index, and the entire array itself as arguments.

这里对您来说有趣的是元素本身,它是您的函数传递的第一个参数。您只需更新它即可使用您的 office 对象,而不是它们的 id
例如:

$scope.ifinfav1 = function(office){
return e.indexOf(office.id) !== -1;
};

...会创造奇迹!

这里是 a working JSFiddle 的链接用示例数据说明我的建议。

关于javascript - ng-repeat 按功能过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34161129/

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