angular javascript 中的 ng-repeat 预过滤器

angular ng-repeat prefilter in javascript

我在 tr 元素上有以下 angular js 过滤器 ng-repeat。我如何才能在 javascript 中完成所有这些?是否可以在一个自定义过滤器中完成?

注意:showRow是一个函数,returns一个布尔值,搜索字符串是一个字符串

ng-repeat="lob in filtered = (lobs | filter : showRow | filter : searchString | orderBy : 'name':true )

您可以使用 $filter 服务,或 $scope.$eval:

$filter('orderBy')(
    $filter('filter')(
        $filter('filter')($scope.lobs, $scope.showRow),
    $scope.searchString),
'name', true);

$scope.$eval("lobs | filter : showRow | filter : searchString | orderBy : 'name':true");

未测试,但应该足够接近工作。

是的,使用第一种方法,您可以创建自己的过滤器来完成这一切。

代码如下

var firstFilter = $filter('filter')($scope.lobs, $scope.showRow)
var secondFilter = $filter('filter')(firstFilter , $scope.searchString)
var finalFilter = $filter('orderBy')(secondFilter , 'name', true)

不要忘记添加 $filter 对控制器的依赖性