我有一条像mysite.com/api/getlist/id=10
我有一个ng-repeat
我希望从列表中删除路径中id值请求的值。
我尝试
ng-repeat="player in type2.players | filter:{ player.id: '!' + $location.search().id }"
但它没有用。
答案 0 :(得分:0)
问题是$location
不在范围内。但是你不应该把它添加到范围内,这是一种不好的做法。更好的解决方案是记住控制器中的搜索id
或过滤器数组:
控制器:
myApp.controller('MyController', ['$scope', '$location', function($scope, $location) {
$scope.searchId = $location.search().id;
}]);
查看:
ng-repeat="player in type2.players | filter:{ player.id: !searchId }"
或强>
在控制器中过滤数组,并在视图中使用过滤后的数组:
控制器:
$scope.filteredPlayers = type2.players.filter(player => player.id !== searchId);
查看:
ng-repeat="player in type2.filteredPlayers"
答案 1 :(得分:0)
根据您的要求,您可以在控制器上定义自定义过滤器表达式,并将其传递给模板中的filter
。
控制器:
$scope.filterCondition = function(item) {
return item.name !== $location.search().id; // custom filter condition
}
模板:
ng-repeat="player in type2.players | filter: filterCOndition"
参考下面的例子:
angular.module("app", [])
.controller("myCtrl", function($scope) {
$scope.items = [
{
name: 'test1'
},{
name: 'test2'
},{
name: 'test3'
},{
name: 'test4'
},{
name: 'test5'
}
];
$scope.filterCOndition = function(item) {
return item.name !== 'test1';
}
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.5/angular.min.js"></script>
<div ng-app="app" ng-controller="myCtrl">
<div ng-repeat="item in items | filter: filterCOndition">
{{item.name}}
<div>
</div>