moa*_*lee 0 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>
Run Code Online (Sandbox Code Playgroud)
使用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'
}
]
});
Run Code Online (Sandbox Code Playgroud)
我知道我需要为过滤器编写一个函数,但到目前为止我还没能使它工作.如果你想看到这个功能,请告诉我.谢谢.
我正在创建一个新的过滤器,如果两个值都存在,它将给出产品.
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;
}
}]);
Run Code Online (Sandbox Code Playgroud)