ng-repeat 按功能过滤
ng-repeat filter by function
我正在尝试在我的 ng-repeat 上使用过滤器,这是一个传入参数的函数,但过滤器似乎不起作用。
这是我正在使用的过滤功能。它比较 2 个数组以查看每个数组中的匹配项应该 return 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
s.
例如:
$scope.ifinfav1 = function(office){
return e.indexOf(office.id) !== -1;
};
...会创造奇迹!
这里有一个 link 到 a working JSFiddle 用示例数据说明我的建议。
我正在尝试在我的 ng-repeat 上使用过滤器,这是一个传入参数的函数,但过滤器似乎不起作用。
这是我正在使用的过滤功能。它比较 2 个数组以查看每个数组中的匹配项应该 return 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
s.
例如:
$scope.ifinfav1 = function(office){
return e.indexOf(office.id) !== -1;
};
...会创造奇迹!
这里有一个 link 到 a working JSFiddle 用示例数据说明我的建议。