【发布时间】:2013-02-18 12:11:02
【问题描述】:
我正在使用 AngularJS,它很棒。 我在文档中找不到它 - Javascript 中与此 AngularJS 表达式等效的是什么:
<div>{{ (myList| filter:mySearch).length }}</div>
感谢您的帮助。
【问题讨论】:
-
你说得对,我搜索的不够多。都是一样的,不好意思重复了。
标签: angularjs
我正在使用 AngularJS,它很棒。 我在文档中找不到它 - Javascript 中与此 AngularJS 表达式等效的是什么:
<div>{{ (myList| filter:mySearch).length }}</div>
感谢您的帮助。
【问题讨论】:
标签: angularjs
在 Angular 的 filter documentation:
{{ 过滤器表达式 |过滤器:表达式}}
$filter('filter')(数组,表达式)
在你的情况下,它看起来像$filter('filter')(myList, mySearch)。
【讨论】:
'filter' 的目的是什么?
$filter('filter') 返回过滤器函数,其中'filter' 指的是您想要的过滤器的名称。在这种情况下,由于它是一个通用过滤器,Angular 团队决定将其命名为'filter'。
$filter 在您的 javascript 代码中对数组使用 AngularJS 过滤功能。假设您想对属性sum 上的对象数组进行排序。你可以这样做:$filter('orderBy')(myArr, "sum", false) - 这与在 ng-repeat 中这样做是一样的:ng-repeat="t in myArr | orderBy:'sum':false"。因此,如果在您的代码中的某个地方,您需要得到一个按ng-repeat 排序的数组版本,这很方便。请记住,它仅适用于scope。我曾经将我的$scope 存储在全局$gs 中。使测试更容易:$gs.$filter...
作为替代语法,您也可以直接注入过滤器,而无需通过$filter 服务。例如,将filter 过滤器注入到您的控制器中,您可以编写:
MyCtrl = function($scope, filterFilter) {
$scope.filtered = filterFilter(myArray, expression);
}
一个与How to use a filter in a controller?非常相似的问题
【讨论】:
在你的 html 中
<input ng-model="search">
<div ng-repeat="thing in things | filter:searchResults"></div>
在你的 JS 中
$scope.$watch('search', function (newValue, oldValue) {
var searchResults = filterFilter($scope.things, $scope.search);
});
【讨论】: