如何在控制器中使此过滤器工作相同

时间:2015-12-14 10:56:19

标签: angularjs

我想过滤控制器中的数据

这有效:

<input style=" margin-left: 15px; margin-top :50px;   width:31%;"  class="form-control" ng-model="ValueSearch" type="text" placeholder="Sort..." id="searchCompanies" autofocus />

<li class="result" ng-repeat="c in CompanyDashData | filter:{companyName:ValueSearch} ">

我想做的就是实现同样的目标,但在控制器中,这是我尝试过的:

<li class="result" ng-repeat="c in CompanyDashData | filter:filterinControl ">

然后在我的控制器中我做了这个功能

 $scope.filterinControl  = function () {
        return $filter('filter')($scope.CompanyDashData,{companyName: $scope.ValueSearch});
 }

但它只返回所有数据。

2 个答案:

答案 0 :(得分:2)

你已经取代了

filter:{companyName:ValueSearch}

通过

filter:filterinControl

因此,如果您希望行为相同,filterinControl必须是具有名为companyName的字段的对象,并且值是输入的值。

但这不是它的本质。它是一个函数,它再次调用过滤器,并返回过滤后的数组。因此,您将过滤集合作为过滤器应用。

你可能想要的是

<li class="result" ng-repeat="c in filterinControl() ">

这将调用filterinControl()并迭代它返回的过滤数组。

答案 1 :(得分:0)

嗯...你试试这个:

HTML:

<li class="result" ng-repeat="c in filterinControl">

JS:

 $scope.filterinControl  = function () {
        return $filter('filter')($scope.CompanyDashData,{companyName: $scope.ValueSearch});
 }