使用名称过滤器angularJS使一个过滤器覆盖另一个过滤器

时间:2015-07-15 14:48:58

标签: angularjs angularjs-ng-repeat angularjs-filter

我有一组数据,我在AngularJS中使用ng-repeat显示。显示的数据被过滤,然后根据用户输入进行分页,过滤器引用控制器中的功能。

现在我想要做的是,如果用户在搜索字段中输入文本并且仅根据输入的文本进行过滤,则覆盖当前的过滤条件。即如果用户输入文本,则其他过滤器不再适用,而是使用文本过滤器。我觉得我设置它的方式就是在控制器的过滤功能中创建一个if函数,然后通过文本javascript重新创建角度过滤器。但是,我不知道该怎么做,即使它是正确的方式。

以下是代码片段,希望能够很好地概述当前状态以及我想要实现的目标。

TEXT SEARCH HTML

<input         
ng-model="searchData.query"
type="text" 
name="productname"
id="productname"
class="form-control productname-answer">

过滤HTML

<div ng-repeat="product in (productsFilterd = (productData | filter: {productfilter:true} | orderBy:'relevance':true)).slice(((productData.currentPage-1)*productData.itemsPerPage), ((productData.currentPage)*productData.itemsPerPage))">
...
</div>

CONTROLLER

    $scope.getProductfilter = function() {
for (i = 0; i < $scope.productprofiles.length; i++) {
    if ($scope.productprofiles[i].reqlanguagecompara === 1 && $scope.productprofiles[i].reqservicecompara === 1) {
        $scope.productprofiles[i].productfilter = true;
    }
    else {
        $scope.productprofiles[i].productfilter = false;
    };
    };
};

0 个答案:

没有答案