AngularJS(过滤器):如何在对象属性上实现多关键字搜索?

时间:2014-08-21 07:08:30

标签: angularjs angular-filters

检查这个jsFiddle:http://jsfiddle.net/mystikacid/hajo0c33/

我在输入框中使用关键字来过滤要显示的对象。只要我输入一个关键字,这个工作正常。但是,如果我尝试按两个关键字进行过滤(例如,我的查询是 - '变形金刚150V'因为我想查找使用150V的变形金刚,它不显示任何结果。

HTML

<div ng-app="myApp">
<div ng-controller="myCtrl">
    <input type='text' ng-model='query' placeholder = "Search" />
    <div ng-repeat="product in products | filter : query">
        {{product.name}} | 
        {{product.family}} | 
        {{product.amperage}} |
        {{product.volt}}
    </div>
</div>

的Javascript

var myApp = angular.module('myApp', []);

myApp.controller('myCtrl', function($scope){

$scope.products = [
    {
        name : '9T21S1050',
        family : 'Transformer',
        amperage : '20A',
        volt : '150V'
    },
    {
        name : '9T85B3092',
        family : 'Transformer',
        amperage : '15A',
        volt : '200V'
    },
    {
        name : 'AEU3182RCXAXB4',
        family : 'Panel Board',
        amperage : '30A',
        volt : '250V'
    },
    {
        name : 'AQU1182RCXAXB4',
        family : 'Panel Board',
        amperage : '25A',
        volt : '300V'
    },
    {
        name : 'AQU1422RCXAXT1',
        family : 'Panel Board',
        amperage : '35A',
        volt : '150V'
    }
]


});

我知道我需要为过滤器编写一个函数,但到目前为止我还没能使它工作。如果您也希望看到此功能,请与我们联系。 感谢。

1 个答案:

答案 0 :(得分:8)

我正在创建一个新的过滤器,如果两个值都存在,它将提供产品。

var m = angular.module('yourModuleName');
m.filter('advancefilter', ['$filter', function($filter){
    return function(data, text){
        var textArr = text.split(' ');
        angular.forEach(textArr, function(test){
            if(test){
                  data = $filter('filter')(data, test);
            }
        });
        return data;
    }
}]);
相关问题