如何在javascript中使用过滤器而不是Html

A-P*_*lgy 48 angularjs

我正在使用AngularJS,这很棒.我在文档中找不到它 - 这个AngularJS表达式在Javascript中的等价物是什么:

<div>{{ (myList| filter:mySearch).length }}</div>
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

bml*_*ite 83

这是关于Angular的过滤器文档:

在HTML模板绑定中

{{filter_expression | 过滤器:表达式}}

在JavaScript中

$ filter('filter')(数组,表达式)

在你的情况下,它看起来像$filter('filter')(myList, mySearch).

  • @Cody` $ filter('filter')`返回过滤器函数,其中`'filter'`指的是你想要的过滤器名称.在这种情况下,由于它是一个通用的过滤器,Angular团队只是决定将其命名为"过滤器". (4认同)
  • 谢谢,这就是我的想法,但我遇到了一个问题,$ filter被"未定义".我没有把它包括在内..现在它已经包含在内了,这是有效的.谢谢! (3认同)
  • 您可以使用`$ filter`在javascript代码中对数组使用AngularJS过滤器函数.假设您要对属性"sum"上的对象数组进行排序.你可以这样做:`$ filter('orderBy')(myArr,"sum",false)` - 这与在`ng-repeat`中执行它是一样的:`ng-repeat ="t在myArr中| orderBy:'sum':false"`.因此,如果代码中的某个位置需要将数组的版本排序为"ng-repeat",这很方便.请记住它只适用于`scope`.我用来在全局`$ gs`中存储我的`$ scope`.使测试更容易:`$ gs.$ filter ...` (3认同)

pko*_*rce 6

作为替代语法,您还可以直接注入过滤器,而无需通过该$filter服务.例如,要将filter过滤器注入控制器,您可以编写:

MyCtrl = function($scope, filterFilter) {

  $scope.filtered = filterFilter(myArray, expression);
}
Run Code Online (Sandbox Code Playgroud)

一个与如何在控制器中使用过滤器非常类似的问题