Javascript 基于IDs动态列表的角度滤波器
在我的Angular应用程序中,我想根据我已经动态生成的ID列表,使用Javascript 基于IDs动态列表的角度滤波器,javascript,angularjs,angular-filters,Javascript,Angularjs,Angular Filters,在我的Angular应用程序中,我想根据我已经动态生成的ID列表,使用ng repeat过滤下拉按钮上生成的项目 此列表基本上是一个数字数组,可以使用$scope.$watchCollection动态更新,例如: $scope.selectedBPs = [1, 2] 我在前面提到的dropdwon按钮上使用ng repeat生成的每个项目都有一个id属性。我希望筛选器只在$scope.selectedBPs包含其id时显示特定项 目前我的HTML是: <ul class="dropdo
ng repeat
过滤下拉按钮上生成的项目
此列表基本上是一个数字数组,可以使用$scope.$watchCollection
动态更新,例如:
$scope.selectedBPs = [1, 2]
我在前面提到的dropdwon按钮上使用ng repeat
生成的每个项目都有一个id属性。我希望筛选器只在$scope.selectedBPs
包含其id时显示特定项
目前我的HTML是:
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<li ng-repeat="marker in vm.markers" ng-click="progressMarkerSelected.name = marker.name;">
<a href role="menuitem" tabindex="-1">{{marker.name}}</a>
</li>
</ul>
-
因此,基本上,我只希望标记出现在$scope.selectedBPs.indexOf(marker.bpId)>-1
(bpId是项的id)的情况下
是否可以使用过滤器进行此操作
如何将
$scope.selectedBPs
传递给angular筛选器,以便在列表更改时动态更新下拉列表?您可以在angular中创建自己的自定义筛选器,它可以执行任何您想要的操作,语法很简单,例如:ng repeat=“marker in vm.markers | filter:myAmazingFilter”
在这个自定义过滤器中,您将接收iterable项作为参数,因此您可以进行测试以显示或不显示
请参见下面的示例:
var-app=angular.module(“app”,[]);
app.controller('ListCtrl',函数($scope){
$scope.cars=[
{
id:1,
“名称”:“野马”
},
{
id:2,
“名称”:“克尔维特”
},
{
id:3,
“姓名”:“卡马罗”
},
{
id:4,
“名称”:“福特GT”
}
];
$scope.selectedds=[1,3];
$scope.myCustomFilter=函数(项){
如果($scope.selectedds.indexOf(item.id)>=0){//如果item.id是Mustang或Camaro,则返回true
return true;//return true以重复方式显示项目
}
返回false;
}
});代码>
- {{car.name}
那么您想在情况或特定条件下从阵列中删除项目吗?如果我理解正确,你可以用过滤器来做。因此,仅显示所选BPS中存在的项目。将项目传递给筛选器,如so{{marker in vm.markers | bpsFilter:selectedBPs}},然后在筛选器中接收字段,如果需要示例,请告诉我哦,这样筛选器就可以是我在控制器中声明的函数?非常感谢。